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.
Files changed (662) hide show
  1. {s3dgraphy-1.6.0.dev111/src/s3dgraphy.egg-info → s3dgraphy-1.6.0.dev112}/PKG-INFO +1 -1
  2. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/pyproject.toml +1 -1
  3. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/__init__.py +1 -1
  4. s3dgraphy-1.6.0.dev112/src/s3dgraphy/epoch_scope.py +513 -0
  5. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/alternatives.py +193 -42
  6. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112/src/s3dgraphy.egg-info}/PKG-INFO +1 -1
  7. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy.egg-info/SOURCES.txt +2 -0
  8. s3dgraphy-1.6.0.dev112/tests/test_epoch_scope.py +139 -0
  9. s3dgraphy-1.6.0.dev112/tests/test_spazio_container.py +92 -0
  10. s3dgraphy-1.6.0.dev111/tests/test_spazio_container.py +0 -52
  11. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/LICENSE +0 -0
  12. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/MANIFEST.in +0 -0
  13. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/README.md +0 -0
  14. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/setup.cfg +0 -0
  15. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/acquisition_descriptor.schema.json +0 -0
  16. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/acquisition_mappings/ercolano.json +0 -0
  17. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/acquisition_mappings/fs.json +0 -0
  18. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/acquisition_mappings/uri.json +0 -0
  19. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/alternative_cases.json +0 -0
  20. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/datamodel_translations.json +0 -0
  21. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em.ttl +0 -0
  22. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_basemap_sources.json +0 -0
  23. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_document_types.json +0 -0
  24. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_extractor_types.json +0 -0
  25. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_palette_icons.json +0 -0
  26. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_qualia_types.json +0 -0
  27. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_qualia_types_additions.json +0 -0
  28. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_state_symbols.json +0 -0
  29. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_visual_rules.json +0 -0
  30. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/hdto_extension.ttl +0 -0
  31. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/new_qualia_template.json +0 -0
  32. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/node_registry.generated.json +0 -0
  33. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/outdated_s3dgraphy.ttl +0 -0
  34. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/outdated_s3dgraphy_nomapping.ttl +0 -0
  35. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json +0 -0
  36. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json.v155.bak +0 -0
  37. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/s3Dgraphy_node_datamodel.json +0 -0
  38. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/ActivityNodeGroup.svg +0 -0
  39. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.png +0 -0
  40. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.svg +0 -0
  41. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/EpochNode.svg +0 -0
  42. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/ParadataNodeGroup.svg +0 -0
  43. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/RSF.png +0 -0
  44. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/RSF.svg +0 -0
  45. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SE.svg +0 -0
  46. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SE_old.png +0 -0
  47. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SE_old.svg +0 -0
  48. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SF.png +0 -0
  49. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SF.svg +0 -0
  50. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/TSU.png +0 -0
  51. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/US.png +0 -0
  52. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/US.svg +0 -0
  53. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USD.png +0 -0
  54. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USD.svg +0 -0
  55. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USVn.png +0 -0
  56. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USVn.svg +0 -0
  57. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USVs.png +0 -0
  58. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USVs.svg +0 -0
  59. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/UTR.svg +0 -0
  60. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/VSF.png +0 -0
  61. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/VSF.svg +0 -0
  62. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/author.png +0 -0
  63. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/author.svg +0 -0
  64. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/author_ai.png +0 -0
  65. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/author_ai.svg +0 -0
  66. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/bozze/UT.svg +0 -0
  67. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/bozze/UT0.svg +0 -0
  68. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/bozze/district.svg +0 -0
  69. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/bozze/site.svg +0 -0
  70. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/combiner.png +0 -0
  71. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/combiner.svg +0 -0
  72. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/container.svg +0 -0
  73. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/continuity.png +0 -0
  74. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/continuity.svg +0 -0
  75. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/document.png +0 -0
  76. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/document.svg +0 -0
  77. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/00_transformation.svg +0 -0
  78. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/01_topographicnetwork.svg +0 -0
  79. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/02_pointcloud.svg +0 -0
  80. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/03_mesh.svg +0 -0
  81. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/04_points.svg +0 -0
  82. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/05_lines.svg +0 -0
  83. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/06_polygons.svg +0 -0
  84. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/07_DEM.svg +0 -0
  85. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/08_ortophoto.svg +0 -0
  86. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/09_photos.svg +0 -0
  87. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/10_laserscanner.svg +0 -0
  88. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device.svg +0 -0
  89. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_computer.svg +0 -0
  90. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_drone.svg +0 -0
  91. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_gnss.svg +0 -0
  92. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_optical.svg +0 -0
  93. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_scanner.svg +0 -0
  94. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_sensor.svg +0 -0
  95. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_station.svg +0 -0
  96. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/12_gnss_survey.svg +0 -0
  97. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/13_field_drawing.svg +0 -0
  98. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/14_recording_sheet.svg +0 -0
  99. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/15_decimation.svg +0 -0
  100. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/16_georeferencing.svg +0 -0
  101. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/17_format_conversion.svg +0 -0
  102. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/18_classification.svg +0 -0
  103. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/19_vectorization.svg +0 -0
  104. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/embargo.png +0 -0
  105. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/embargo.svg +0 -0
  106. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/extractor.png +0 -0
  107. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/extractor.svg +0 -0
  108. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/gcp_set.svg +0 -0
  109. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/generic_node.svg +0 -0
  110. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/geo_position.svg +0 -0
  111. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/graph.svg +0 -0
  112. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/graph.svg +0 -0
  113. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/hdt.svg +0 -0
  114. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/heritage_entity.svg +0 -0
  115. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/project.svg +0 -0
  116. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/study.svg +0 -0
  117. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/landscape_surface.svg +0 -0
  118. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/license.png +0 -0
  119. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/license.svg +0 -0
  120. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/link.svg +0 -0
  121. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/narrative.png +0 -0
  122. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/narrative.svg +0 -0
  123. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/play.svg +0 -0
  124. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/property.png +0 -0
  125. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/property.svg +0 -0
  126. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/proxy.svg +0 -0
  127. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/registration_transform.svg +0 -0
  128. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/representation_model.svg +0 -0
  129. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/representation_model_doc.svg +0 -0
  130. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/representation_model_sf.svg +0 -0
  131. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/resource_file.svg +0 -0
  132. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/semantic_shape.svg +0 -0
  133. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serSU.png +0 -0
  134. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serSU.svg +0 -0
  135. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serUSD.png +0 -0
  136. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serUSV.png +0 -0
  137. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serUSVn.svg +0 -0
  138. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serUSVs.svg +0 -0
  139. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/tileset.svg +0 -0
  140. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/version_gltf.svg +0 -0
  141. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/version_mesh.svg +0 -0
  142. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/version_scene.svg +0 -0
  143. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/version_tiles.svg +0 -0
  144. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/RSF.glb +0 -0
  145. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/SF.glb +0 -0
  146. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/TSU.glb +0 -0
  147. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/US.glb +0 -0
  148. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/USD.glb +0 -0
  149. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/USVn.glb +0 -0
  150. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/USVs.glb +0 -0
  151. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/VSF.glb +0 -0
  152. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/combiner.glb +0 -0
  153. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/continuity.glb +0 -0
  154. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/document.glb +0 -0
  155. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/extractor.glb +0 -0
  156. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/property.glb +0 -0
  157. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/serSU.glb +0 -0
  158. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/serUSD.glb +0 -0
  159. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/serUSV.glb +0 -0
  160. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/version_for_cases.json +0 -0
  161. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/version_for_hardware_cases.json +0 -0
  162. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/__main__.py +0 -0
  163. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/acquisition/__init__.py +0 -0
  164. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/acquisition/acquire.py +0 -0
  165. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/acquisition/descriptor.py +0 -0
  166. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/acquisition/mapping.py +0 -0
  167. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/ai_validation.py +0 -0
  168. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/annotation/__init__.py +0 -0
  169. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/annotation/migrate_reading.py +0 -0
  170. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/annotation/paradata.py +0 -0
  171. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/annotation/reading.py +0 -0
  172. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/api.py +0 -0
  173. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/__init__.py +0 -0
  174. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/resolver.py +0 -0
  175. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/LICENSE +0 -0
  176. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/chronontology.jsonld +0 -0
  177. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/getty_aat.jsonld +0 -0
  178. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/getty_tgn.jsonld +0 -0
  179. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/periodo.jsonld +0 -0
  180. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/provenance.json +0 -0
  181. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/classification.py +0 -0
  182. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/container.py +0 -0
  183. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/__init__.py +0 -0
  184. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/connector.py +0 -0
  185. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/consumer.py +0 -0
  186. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/core.py +0 -0
  187. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/reference.py +0 -0
  188. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/crdt.py +0 -0
  189. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/data/StratiMiner_Extraction_Prompt.md +0 -0
  190. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/datamodel.py +0 -0
  191. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/diagnostics.py +0 -0
  192. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dissemination.py +0 -0
  193. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/__init__.py +0 -0
  194. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/capture.py +0 -0
  195. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/corpus.py +0 -0
  196. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/devices.py +0 -0
  197. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/ingest.py +0 -0
  198. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/neighbourhood.py +0 -0
  199. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/residency.py +0 -0
  200. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/edges/__init__.py +0 -0
  201. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/edges/connection_resolver.py +0 -0
  202. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/edges/connections_loader.py +0 -0
  203. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/edges/edge.py +0 -0
  204. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/editorial.py +0 -0
  205. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/__init__.py +0 -0
  206. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/docx_exporter.py +0 -0
  207. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/emjson_exporter.py +0 -0
  208. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/__init__.py +0 -0
  209. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/canvas_generator.py +0 -0
  210. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/edge_generator.py +0 -0
  211. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/epoch_generator.py +0 -0
  212. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/graphml_exporter.py +0 -0
  213. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/graphml_patcher.py +0 -0
  214. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/group_node_generator.py +0 -0
  215. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/node_generator.py +0 -0
  216. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/node_registry.py +0 -0
  217. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/palette_resources.py +0 -0
  218. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/paradata_generator.py +0 -0
  219. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/paradata_image_generator.py +0 -0
  220. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/paradata_node_generators.py +0 -0
  221. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/table_node_generator.py +0 -0
  222. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/utils.py +0 -0
  223. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/html_exporter.py +0 -0
  224. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/ipynb_exporter.py +0 -0
  225. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/json_exporter.py +0 -0
  226. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/latex_exporter.py +0 -0
  227. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/rdf_exporter.py +0 -0
  228. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/unified_xlsx_exporter.py +0 -0
  229. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/__init__.py +0 -0
  230. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/aton.py +0 -0
  231. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/frame.py +0 -0
  232. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/gltf.py +0 -0
  233. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/migrate.py +0 -0
  234. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/proxy.py +0 -0
  235. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/reading_glb.py +0 -0
  236. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/registration.py +0 -0
  237. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/store_backed.py +0 -0
  238. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/transform.py +0 -0
  239. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/wkt.py +0 -0
  240. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/__init__.py +0 -0
  241. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/contours.py +0 -0
  242. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/crs.py +0 -0
  243. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/footprint.py +0 -0
  244. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/geojson.py +0 -0
  245. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/geopackage.py +0 -0
  246. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/geotiff.py +0 -0
  247. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/landscape.py +0 -0
  248. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/layer.py +0 -0
  249. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/shapefile.py +0 -0
  250. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/site.py +0 -0
  251. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/spatialite.py +0 -0
  252. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/wkb.py +0 -0
  253. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/graph.py +0 -0
  254. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/graph_removal.py +0 -0
  255. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/hdto.py +0 -0
  256. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/iiif.py +0 -0
  257. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/__init__.py +0 -0
  258. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/base_importer.py +0 -0
  259. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/csv_importer.py +0 -0
  260. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/emjson_importer.py +0 -0
  261. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/fmpxml_importer.py +0 -0
  262. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/import_graphml.py +0 -0
  263. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/mapped_xlsx_importer.py +0 -0
  264. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/metashape_chain.py +0 -0
  265. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/metashape_project.py +0 -0
  266. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/pyarchinit_footprints.py +0 -0
  267. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/pyarchinit_importer.py +0 -0
  268. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/qualia_importer.py +0 -0
  269. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/rdf_importer.py +0 -0
  270. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/sheet_header.py +0 -0
  271. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/source_text.py +0 -0
  272. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/unified_xlsx_importer.py +0 -0
  273. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/unit_numbers.py +0 -0
  274. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/xlsx_importer.py +0 -0
  275. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/xml_importer.py +0 -0
  276. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/indices.py +0 -0
  277. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/labels.py +0 -0
  278. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/landscape.py +0 -0
  279. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/language.py +0 -0
  280. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/links.py +0 -0
  281. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/__init__.py +0 -0
  282. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/authoring.py +0 -0
  283. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/emdb/generic_specialfind_mapping.json +0 -0
  284. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/emdb/site_properties_mapping.json +0 -0
  285. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/emdb/usm_mapping.json +0 -0
  286. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/generic/excel_to_graphml_mapping.json +0 -0
  287. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/pyarchinit/pyarchinit_us_mapping.json +0 -0
  288. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/registry.py +0 -0
  289. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/source_list/em_sourcelist_it.json +0 -0
  290. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/source_list/source_list_mapping.json +0 -0
  291. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/template_emdb_mapping.json +0 -0
  292. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/template_pyarchinit_mapping.json +0 -0
  293. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/merge/__init__.py +0 -0
  294. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/merge/graph_merger.py +0 -0
  295. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/multigraph/__init__.py +0 -0
  296. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/multigraph/multigraph.py +0 -0
  297. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/__init__.py +0 -0
  298. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/bake.py +0 -0
  299. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/generation.py +0 -0
  300. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/query.py +0 -0
  301. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/registry.py +0 -0
  302. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/site_story.py +0 -0
  303. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/__init__.py +0 -0
  304. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/annotation_region_node.py +0 -0
  305. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/author_node.py +0 -0
  306. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/base_node.py +0 -0
  307. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/combiner_node.py +0 -0
  308. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/document_node.py +0 -0
  309. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/dtc_acquisition_node.py +0 -0
  310. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/dtc_device_node.py +0 -0
  311. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/dtc_node.py +0 -0
  312. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/dtc_process_node.py +0 -0
  313. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/embargo_node.py +0 -0
  314. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/epoch_node.py +0 -0
  315. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/extractor_node.py +0 -0
  316. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/geo_position_node.py +0 -0
  317. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/georeferencing_node.py +0 -0
  318. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/graph_node.py +0 -0
  319. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/group_node.py +0 -0
  320. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/hdt_node.py +0 -0
  321. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/heritage_entity_node.py +0 -0
  322. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/landscape_surface_node.py +0 -0
  323. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/landscape_unit_node.py +0 -0
  324. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/license_node.py +0 -0
  325. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/narrative_node.py +0 -0
  326. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/paradata_node.py +0 -0
  327. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/periodization_node.py +0 -0
  328. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/project_node.py +0 -0
  329. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/property_node.py +0 -0
  330. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/representation_node.py +0 -0
  331. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/resource_file_node.py +0 -0
  332. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/resource_node.py +0 -0
  333. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/semantic_shape_node.py +0 -0
  334. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/stratigraphic_node.py +0 -0
  335. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/study_node.py +0 -0
  336. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/translation_node.py +0 -0
  337. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/ownership.py +0 -0
  338. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/paradata_view.py +0 -0
  339. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/periodization.py +0 -0
  340. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/photogrammetry/__init__.py +0 -0
  341. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/photogrammetry/delta.py +0 -0
  342. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/project_tree.py +0 -0
  343. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/property_source.py +0 -0
  344. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/publication.py +0 -0
  345. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/rapporti.py +0 -0
  346. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resolvers/__init__.py +0 -0
  347. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resolvers/builtin_rules.py +0 -0
  348. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resolvers/property_resolver.py +0 -0
  349. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/__init__.py +0 -0
  350. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/addresses.py +0 -0
  351. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/alignment.py +0 -0
  352. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/asset_list.py +0 -0
  353. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/blend_folder.py +0 -0
  354. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/blend_room.py +0 -0
  355. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/consolidate.py +0 -0
  356. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/detail.py +0 -0
  357. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/files.py +0 -0
  358. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/fs_backend.py +0 -0
  359. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/graph_compose.py +0 -0
  360. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/locate.py +0 -0
  361. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/master_stamp.py +0 -0
  362. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/moved.py +0 -0
  363. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/object_store.py +0 -0
  364. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/resolver.py +0 -0
  365. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/s3_backend.py +0 -0
  366. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/storage_rows.py +0 -0
  367. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/tiles3tz.py +0 -0
  368. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/tileset_fit.py +0 -0
  369. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/use_profiles.py +0 -0
  370. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/versions.py +0 -0
  371. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/rights.py +0 -0
  372. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/__init__.py +0 -0
  373. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/access.py +0 -0
  374. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/engine.py +0 -0
  375. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/errors.py +0 -0
  376. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/inventory.py +0 -0
  377. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/node.py +0 -0
  378. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/pack.py +0 -0
  379. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/trust.py +0 -0
  380. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/shelf/__init__.py +0 -0
  381. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/shelf/core.py +0 -0
  382. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/spatiotemporal.py +0 -0
  383. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/__init__.py +0 -0
  384. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/absorb.py +0 -0
  385. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/emit.py +0 -0
  386. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/hints.py +0 -0
  387. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/identity.py +0 -0
  388. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/study.py +0 -0
  389. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/__init__.py +0 -0
  390. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/_db_handle.py +0 -0
  391. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/_legacy_paradata_svgs.py +0 -0
  392. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/_workspace.py +0 -0
  393. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/conflict_resolver.py +0 -0
  394. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/edge_registry.py +0 -0
  395. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/graph_ingestor.py +0 -0
  396. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/graph_projector.py +0 -0
  397. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/graphml_writer.py +0 -0
  398. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/group_projector.py +0 -0
  399. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/group_store.py +0 -0
  400. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/ingest_result.py +0 -0
  401. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/paradata_store.py +0 -0
  402. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/pyarchinit_pg_importer.py +0 -0
  403. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/rapporti.py +0 -0
  404. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/uuid7.py +0 -0
  405. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/vocab_provider_core.py +0 -0
  406. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/vocab_types.py +0 -0
  407. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_classifier.py +0 -0
  408. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_detector.py +0 -0
  409. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_group_walker.py +0 -0
  410. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_import_pipeline.py +0 -0
  411. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_rapporti_policy.py +0 -0
  412. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_table_parser.py +0 -0
  413. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/templates/em_data_template.xlsx +0 -0
  414. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/templates/em_palette_template.graphml +0 -0
  415. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/temporal/__init__.py +0 -0
  416. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/temporal/inference_engine.py +0 -0
  417. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/temporal/relative_chronology.py +0 -0
  418. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/__init__.py +0 -0
  419. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/consumer_drift.py +0 -0
  420. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/datamodel_i18n.py +0 -0
  421. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/deliverable_report.py +0 -0
  422. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/glyph_sheet.py +0 -0
  423. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/glyphs_from_svg.py +0 -0
  424. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/node_finder.py +0 -0
  425. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/ontology_html.py +0 -0
  426. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/sync_node_datamodel.py +0 -0
  427. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/wheel_drift.py +0 -0
  428. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/transforms/__init__.py +0 -0
  429. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/transforms/aux_tracking.py +0 -0
  430. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/transforms/compact.py +0 -0
  431. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/transforms/materialize_continuity.py +0 -0
  432. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/translation.py +0 -0
  433. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/utils/__init__.py +0 -0
  434. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/utils/utils.py +0 -0
  435. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/utils/visual_layout.py +0 -0
  436. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/zero_hour.py +0 -0
  437. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy.egg-info/dependency_links.txt +0 -0
  438. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy.egg-info/requires.txt +0 -0
  439. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy.egg-info/top_level.txt +0 -0
  440. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_acquisition.py +0 -0
  441. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_acquisition_fs.py +0 -0
  442. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_add_resource.py +0 -0
  443. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_ai_validation_nodes.py +0 -0
  444. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_alternative_labels.py +0 -0
  445. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_alternative_sets.py +0 -0
  446. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_alternatives_hat.py +0 -0
  447. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_anastylosis_document_type.py +0 -0
  448. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_api_surface.py +0 -0
  449. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_asset_dtc_protocol.py +0 -0
  450. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_asset_list.py +0 -0
  451. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_asset_versions.py +0 -0
  452. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_assets_livelli.py +0 -0
  453. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_aton_shapes.py +0 -0
  454. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_attach_only.py +0 -0
  455. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_authority_projection.py +0 -0
  456. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_authority_resolver.py +0 -0
  457. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_blend_folder.py +0 -0
  458. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_blend_locator.py +0 -0
  459. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_blend_room.py +0 -0
  460. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_bucket_alignment.py +0 -0
  461. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_canonical_document_rename.py +0 -0
  462. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_canvas_metadata_import.py +0 -0
  463. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_capture_acquisition.py +0 -0
  464. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_capture_rdf_class.py +0 -0
  465. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_chronology_on_request.py +0 -0
  466. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_cloud_placeholders.py +0 -0
  467. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_coating_unit.py +0 -0
  468. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_composite_node_name.py +0 -0
  469. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_connection_resolver.py +0 -0
  470. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_consolida_2.py +0 -0
  471. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_consolidate_compose.py +0 -0
  472. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_consumer_drift.py +0 -0
  473. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_container.py +0 -0
  474. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_container_layouts.py +0 -0
  475. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_containment_tpq.py +0 -0
  476. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_contemporaneity.py +0 -0
  477. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_contract.py +0 -0
  478. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_contract_consumer.py +0 -0
  479. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_convert_command.py +0 -0
  480. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_crdt.py +0 -0
  481. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_cycle_message_is_cheap.py +0 -0
  482. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_datamodel_fingerprint.py +0 -0
  483. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_datamodel_i18n.py +0 -0
  484. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_datum_operation.py +0 -0
  485. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_detail.py +0 -0
  486. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_deterministic_ids.py +0 -0
  487. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_em_sourcelist.py +0 -0
  488. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_file_set_stamp.py +0 -0
  489. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_graphml_without_a_database.py +0 -0
  490. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_image_set_texturing.py +0 -0
  491. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_not_georeferenced.py +0 -0
  492. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_one_act_n_outputs.py +0 -0
  493. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_ttl_round_trip.py +0 -0
  494. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev30_decisions.py +0 -0
  495. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_devices.py +0 -0
  496. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dissemination_tombstones.py +0 -0
  497. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dove_sta_il_testo.py +0 -0
  498. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_corpus.py +0 -0
  499. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_ingest.py +0 -0
  500. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_neighbourhood.py +0 -0
  501. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_projection.py +0 -0
  502. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_residency.py +0 -0
  503. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_edge_outside_graph.py +0 -0
  504. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_edge_ui_phrases.py +0 -0
  505. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_editorial.py +0 -0
  506. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_em_ttl_matches_the_datamodels.py +0 -0
  507. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_emjson_conformance.py +0 -0
  508. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_emjson_no_drawing_keys.py +0 -0
  509. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_emjson_roundtrip.py +0 -0
  510. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_emjson_schema_version.py +0 -0
  511. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_end_of_unit.py +0 -0
  512. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_epoch_instances.py +0 -0
  513. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_epoch_properties_and_sub_epochs.py +0 -0
  514. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_epoch_undated_import.py +0 -0
  515. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_explicit_node_type_marker.py +0 -0
  516. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_extracted_from_unit.py +0 -0
  517. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_file_frame.py +0 -0
  518. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_filtered_import.py +0 -0
  519. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_fit_affine_no_numpy.py +0 -0
  520. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_fmpxml_importer.py +0 -0
  521. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_foto_documenti.py +0 -0
  522. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_fs_backend.py +0 -0
  523. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_functional_units.py +0 -0
  524. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_georeference_scene.py +0 -0
  525. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_gis_base.py +0 -0
  526. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_gis_site.py +0 -0
  527. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_gltf_stitch.py +0 -0
  528. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_glyph_paths.py +0 -0
  529. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_header_code.py +0 -0
  530. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_helpers_indexed.py +0 -0
  531. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_indices_alive.py +0 -0
  532. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_indices_edges.py +0 -0
  533. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_removal.py +0 -0
  534. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_scope_migration.py +0 -0
  535. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_hdto_glyphs.py +0 -0
  536. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_hdto_projection.py +0 -0
  537. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_hdto_study.py +0 -0
  538. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_header_key_aliases.py +0 -0
  539. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_i_generi_dei_passi.py +0 -0
  540. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_iiif.py +0 -0
  541. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_il_modo_d_accesso.py +0 -0
  542. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_il_modo_dal_relay.py +0 -0
  543. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_il_proprietario_si_legge.py +0 -0
  544. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_il_riallineamento.py +0 -0
  545. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_import_without_residues.py +0 -0
  546. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_importer_edge_hygiene.py +0 -0
  547. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_impronte_saggi_tagli.py +0 -0
  548. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_ipynb_exporter.py +0 -0
  549. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_iri_extendedmatrix.py +0 -0
  550. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_issue27_small_points.py +0 -0
  551. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_la_lingua_alla_nascita.py +0 -0
  552. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_la_lingua_dei_dati.py +0 -0
  553. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_la_lingua_nell_op.py +0 -0
  554. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_la_riga_d_intestazione.py +0 -0
  555. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_lab_orizzonti.py +0 -0
  556. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_landscape_ontology.py +0 -0
  557. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_latex_exporter.py +0 -0
  558. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_le_traduzioni.py +0 -0
  559. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_lod_levels.py +0 -0
  560. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_lossless_roundtrip.py +0 -0
  561. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_mapping_authoring.py +0 -0
  562. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_mapping_csv_and_relations.py +0 -0
  563. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_masonry_unit.py +0 -0
  564. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_material_color.py +0 -0
  565. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_merge_conflicts.py +0 -0
  566. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_metashape_project.py +0 -0
  567. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_migrate_legacy_proxy.py +0 -0
  568. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_authorship.py +0 -0
  569. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_bake_docx.py +0 -0
  570. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_figures.py +0 -0
  571. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_generation.py +0 -0
  572. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_mentions.py +0 -0
  573. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_node.py +0 -0
  574. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_query.py +0 -0
  575. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_scaffolder.py +0 -0
  576. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_site_place.py +0 -0
  577. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_unvalidated_export.py +0 -0
  578. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_node_datamodel_registry.py +0 -0
  579. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_node_finder.py +0 -0
  580. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_node_type_map_integrity.py +0 -0
  581. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_one_resolver.py +0 -0
  582. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_one_spelling_writers.py +0 -0
  583. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_ontology_html.py +0 -0
  584. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_op_vocabulary.py +0 -0
  585. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_part_twins.py +0 -0
  586. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_pg_importer.py +0 -0
  587. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_photogrammetry_delta.py +0 -0
  588. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_physical_relation_spellings.py +0 -0
  589. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_piu_indirizzi.py +0 -0
  590. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_promote_keeps_proxy_type.py +0 -0
  591. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_promotion.py +0 -0
  592. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_property_as_source.py +0 -0
  593. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_property_owners.py +0 -0
  594. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_proxy_resource.py +0 -0
  595. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_proxy_retype.py +0 -0
  596. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_psx_locator.py +0 -0
  597. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_pyarchinit_tier2.py +0 -0
  598. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_qualia_dai_d7_d8.py +0 -0
  599. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rdf_embedding.py +0 -0
  600. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rdf_reverse_edges.py +0 -0
  601. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rdf_roundtrip.py +0 -0
  602. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rdf_sub_epoch_direction.py +0 -0
  603. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_coords.py +0 -0
  604. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_glb.py +0 -0
  605. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_migration.py +0 -0
  606. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_place.py +0 -0
  607. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_rdf.py +0 -0
  608. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_recompute_warnings.py +0 -0
  609. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_registration.py +0 -0
  610. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_release.py +0 -0
  611. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reproject.py +0 -0
  612. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_file_node.py +0 -0
  613. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_files_implicit.py +0 -0
  614. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_layer.py +0 -0
  615. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_representations.py +0 -0
  616. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_revision.py +0 -0
  617. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_tier.py +0 -0
  618. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reverse_edges.py +0 -0
  619. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rm_container_node_group.py +0 -0
  620. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_room_import.py +0 -0
  621. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_room_import_access.py +0 -0
  622. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_room_import_inventory.py +0 -0
  623. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_room_import_trust.py +0 -0
  624. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_s3_backend.py +0 -0
  625. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_semantic_purity.py +0 -0
  626. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_series_vsf.py +0 -0
  627. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shelf.py +0 -0
  628. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shelf_facets.py +0 -0
  629. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shelf_hatting.py +0 -0
  630. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shelf_role_uri_table.py +0 -0
  631. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shipped_mappings.py +0 -0
  632. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_source_list_mapping.py +0 -0
  633. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_source_text.py +0 -0
  634. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_spatiotemporal_entities.py +0 -0
  635. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_special_find_definitions.py +0 -0
  636. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stable_study_code.py +0 -0
  637. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stamp.py +0 -0
  638. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stamp_hints.py +0 -0
  639. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stamp_title_description.py +0 -0
  640. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_storage_rows.py +0 -0
  641. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_store_backed_geometry.py +0 -0
  642. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stratiminer_api.py +0 -0
  643. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_study_metadata.py +0 -0
  644. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_threed_instances.py +0 -0
  645. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_threed_style.py +0 -0
  646. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_tileset_fit.py +0 -0
  647. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_tileset_resource.py +0 -0
  648. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_timbra_master.py +0 -0
  649. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_transform_form.py +0 -0
  650. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_ttl_roundtrip.py +0 -0
  651. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_unit_definition.py +0 -0
  652. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_unit_numbers.py +0 -0
  653. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_use_profiles.py +0 -0
  654. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_valore_proprieta_doppio.py +0 -0
  655. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_verifica_provenance.py +0 -0
  656. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_version_for.py +0 -0
  657. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_visual_assets.py +0 -0
  658. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_wheel_drift.py +0 -0
  659. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_xlsx_containment_and_unknown_bounds.py +0 -0
  660. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_xlsx_importer_graph_init.py +0 -0
  661. {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_xlsx_source_column.py +0 -0
  662. {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.dev111
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.dev111"
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"
@@ -1,4 +1,4 @@
1
- __version__ = "1.6.0.dev111"
1
+ __version__ = "1.6.0.dev112"
2
2
  __datamodel_version__ = "1.5.5" # s3Dgraphy connections datamodel version
3
3
 
4
4
  # s3Dgraphy/__init__.py
@@ -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