s3dgraphy 1.6.0.dev104__tar.gz → 1.6.0.dev106__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 (657) hide show
  1. {s3dgraphy-1.6.0.dev104/src/s3dgraphy.egg-info → s3dgraphy-1.6.0.dev106}/PKG-INFO +1 -1
  2. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/pyproject.toml +1 -1
  3. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/s3Dgraphy_node_datamodel.json +2 -1
  4. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/__init__.py +1 -1
  5. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/alternatives.py +196 -6
  6. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/asset_list.py +49 -11
  7. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/use_profiles.py +36 -0
  8. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106/src/s3dgraphy.egg-info}/PKG-INFO +1 -1
  9. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy.egg-info/SOURCES.txt +1 -0
  10. s3dgraphy-1.6.0.dev106/tests/test_assets_livelli.py +140 -0
  11. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/LICENSE +0 -0
  12. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/MANIFEST.in +0 -0
  13. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/README.md +0 -0
  14. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/setup.cfg +0 -0
  15. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/acquisition_descriptor.schema.json +0 -0
  16. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/acquisition_mappings/ercolano.json +0 -0
  17. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/acquisition_mappings/fs.json +0 -0
  18. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/acquisition_mappings/uri.json +0 -0
  19. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/alternative_cases.json +0 -0
  20. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/datamodel_translations.json +0 -0
  21. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/em.ttl +0 -0
  22. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/em_basemap_sources.json +0 -0
  23. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/em_document_types.json +0 -0
  24. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/em_extractor_types.json +0 -0
  25. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/em_palette_icons.json +0 -0
  26. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/em_qualia_types.json +0 -0
  27. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/em_qualia_types_additions.json +0 -0
  28. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/em_state_symbols.json +0 -0
  29. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/em_visual_rules.json +0 -0
  30. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/hdto_extension.ttl +0 -0
  31. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/new_qualia_template.json +0 -0
  32. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/node_registry.generated.json +0 -0
  33. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/outdated_s3dgraphy.ttl +0 -0
  34. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/outdated_s3dgraphy_nomapping.ttl +0 -0
  35. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json +0 -0
  36. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json.v155.bak +0 -0
  37. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/ActivityNodeGroup.svg +0 -0
  38. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.png +0 -0
  39. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.svg +0 -0
  40. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/EpochNode.svg +0 -0
  41. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/ParadataNodeGroup.svg +0 -0
  42. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/RSF.png +0 -0
  43. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/RSF.svg +0 -0
  44. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/SE.svg +0 -0
  45. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/SE_old.png +0 -0
  46. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/SE_old.svg +0 -0
  47. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/SF.png +0 -0
  48. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/SF.svg +0 -0
  49. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/TSU.png +0 -0
  50. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/US.png +0 -0
  51. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/US.svg +0 -0
  52. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/USD.png +0 -0
  53. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/USD.svg +0 -0
  54. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/USVn.png +0 -0
  55. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/USVn.svg +0 -0
  56. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/USVs.png +0 -0
  57. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/USVs.svg +0 -0
  58. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/UTR.svg +0 -0
  59. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/VSF.png +0 -0
  60. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/VSF.svg +0 -0
  61. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/author.png +0 -0
  62. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/author.svg +0 -0
  63. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/author_ai.png +0 -0
  64. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/author_ai.svg +0 -0
  65. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/bozze/UT.svg +0 -0
  66. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/bozze/UT0.svg +0 -0
  67. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/bozze/district.svg +0 -0
  68. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/bozze/site.svg +0 -0
  69. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/combiner.png +0 -0
  70. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/combiner.svg +0 -0
  71. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/container.svg +0 -0
  72. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/continuity.png +0 -0
  73. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/continuity.svg +0 -0
  74. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/document.png +0 -0
  75. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/document.svg +0 -0
  76. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/00_transformation.svg +0 -0
  77. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/01_topographicnetwork.svg +0 -0
  78. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/02_pointcloud.svg +0 -0
  79. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/03_mesh.svg +0 -0
  80. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/04_points.svg +0 -0
  81. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/05_lines.svg +0 -0
  82. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/06_polygons.svg +0 -0
  83. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/07_DEM.svg +0 -0
  84. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/08_ortophoto.svg +0 -0
  85. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/09_photos.svg +0 -0
  86. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/10_laserscanner.svg +0 -0
  87. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device.svg +0 -0
  88. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_computer.svg +0 -0
  89. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_drone.svg +0 -0
  90. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_gnss.svg +0 -0
  91. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_optical.svg +0 -0
  92. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_scanner.svg +0 -0
  93. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_sensor.svg +0 -0
  94. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_station.svg +0 -0
  95. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/12_gnss_survey.svg +0 -0
  96. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/13_field_drawing.svg +0 -0
  97. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/14_recording_sheet.svg +0 -0
  98. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/15_decimation.svg +0 -0
  99. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/16_georeferencing.svg +0 -0
  100. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/17_format_conversion.svg +0 -0
  101. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/18_classification.svg +0 -0
  102. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/dtc/19_vectorization.svg +0 -0
  103. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/embargo.png +0 -0
  104. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/embargo.svg +0 -0
  105. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/extractor.png +0 -0
  106. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/extractor.svg +0 -0
  107. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/gcp_set.svg +0 -0
  108. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/generic_node.svg +0 -0
  109. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/geo_position.svg +0 -0
  110. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/graph.svg +0 -0
  111. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/hdto/graph.svg +0 -0
  112. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/hdto/hdt.svg +0 -0
  113. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/hdto/heritage_entity.svg +0 -0
  114. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/hdto/project.svg +0 -0
  115. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/hdto/study.svg +0 -0
  116. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/landscape_surface.svg +0 -0
  117. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/license.png +0 -0
  118. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/license.svg +0 -0
  119. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/link.svg +0 -0
  120. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/narrative.png +0 -0
  121. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/narrative.svg +0 -0
  122. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/play.svg +0 -0
  123. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/property.png +0 -0
  124. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/property.svg +0 -0
  125. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/proxy.svg +0 -0
  126. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/registration_transform.svg +0 -0
  127. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/representation_model.svg +0 -0
  128. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/representation_model_doc.svg +0 -0
  129. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/representation_model_sf.svg +0 -0
  130. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/resource_file.svg +0 -0
  131. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/semantic_shape.svg +0 -0
  132. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/serSU.png +0 -0
  133. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/serSU.svg +0 -0
  134. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/serUSD.png +0 -0
  135. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/serUSV.png +0 -0
  136. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/serUSVn.svg +0 -0
  137. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/serUSVs.svg +0 -0
  138. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/tileset.svg +0 -0
  139. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/version_gltf.svg +0 -0
  140. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/version_mesh.svg +0 -0
  141. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/version_scene.svg +0 -0
  142. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/2D/version_tiles.svg +0 -0
  143. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/RSF.glb +0 -0
  144. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/SF.glb +0 -0
  145. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/TSU.glb +0 -0
  146. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/US.glb +0 -0
  147. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/USD.glb +0 -0
  148. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/USVn.glb +0 -0
  149. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/USVs.glb +0 -0
  150. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/VSF.glb +0 -0
  151. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/combiner.glb +0 -0
  152. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/continuity.glb +0 -0
  153. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/document.glb +0 -0
  154. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/extractor.glb +0 -0
  155. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/property.glb +0 -0
  156. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/serSU.glb +0 -0
  157. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/serUSD.glb +0 -0
  158. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/src/3D/serUSV.glb +0 -0
  159. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/version_for_cases.json +0 -0
  160. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/JSON_config/version_for_hardware_cases.json +0 -0
  161. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/__main__.py +0 -0
  162. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/acquisition/__init__.py +0 -0
  163. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/acquisition/acquire.py +0 -0
  164. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/acquisition/descriptor.py +0 -0
  165. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/acquisition/mapping.py +0 -0
  166. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/ai_validation.py +0 -0
  167. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/annotation/__init__.py +0 -0
  168. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/annotation/migrate_reading.py +0 -0
  169. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/annotation/paradata.py +0 -0
  170. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/annotation/reading.py +0 -0
  171. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/api.py +0 -0
  172. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/authorities/__init__.py +0 -0
  173. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/authorities/resolver.py +0 -0
  174. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/authorities/snapshots/LICENSE +0 -0
  175. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/authorities/snapshots/chronontology.jsonld +0 -0
  176. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/authorities/snapshots/getty_aat.jsonld +0 -0
  177. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/authorities/snapshots/getty_tgn.jsonld +0 -0
  178. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/authorities/snapshots/periodo.jsonld +0 -0
  179. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/authorities/snapshots/provenance.json +0 -0
  180. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/classification.py +0 -0
  181. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/container.py +0 -0
  182. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/contract/__init__.py +0 -0
  183. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/contract/connector.py +0 -0
  184. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/contract/consumer.py +0 -0
  185. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/contract/core.py +0 -0
  186. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/contract/reference.py +0 -0
  187. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/crdt.py +0 -0
  188. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/data/StratiMiner_Extraction_Prompt.md +0 -0
  189. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/datamodel.py +0 -0
  190. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/diagnostics.py +0 -0
  191. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/dissemination.py +0 -0
  192. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/dtc/__init__.py +0 -0
  193. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/dtc/capture.py +0 -0
  194. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/dtc/corpus.py +0 -0
  195. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/dtc/devices.py +0 -0
  196. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/dtc/ingest.py +0 -0
  197. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/dtc/neighbourhood.py +0 -0
  198. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/dtc/residency.py +0 -0
  199. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/edges/__init__.py +0 -0
  200. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/edges/connection_resolver.py +0 -0
  201. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/edges/connections_loader.py +0 -0
  202. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/edges/edge.py +0 -0
  203. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/editorial.py +0 -0
  204. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/__init__.py +0 -0
  205. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/docx_exporter.py +0 -0
  206. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/emjson_exporter.py +0 -0
  207. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/__init__.py +0 -0
  208. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/canvas_generator.py +0 -0
  209. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/edge_generator.py +0 -0
  210. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/epoch_generator.py +0 -0
  211. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/graphml_exporter.py +0 -0
  212. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/graphml_patcher.py +0 -0
  213. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/group_node_generator.py +0 -0
  214. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/node_generator.py +0 -0
  215. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/node_registry.py +0 -0
  216. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/palette_resources.py +0 -0
  217. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/paradata_generator.py +0 -0
  218. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/paradata_image_generator.py +0 -0
  219. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/paradata_node_generators.py +0 -0
  220. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/table_node_generator.py +0 -0
  221. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/graphml/utils.py +0 -0
  222. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/html_exporter.py +0 -0
  223. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/ipynb_exporter.py +0 -0
  224. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/json_exporter.py +0 -0
  225. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/latex_exporter.py +0 -0
  226. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/rdf_exporter.py +0 -0
  227. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/exporter/unified_xlsx_exporter.py +0 -0
  228. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/__init__.py +0 -0
  229. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/aton.py +0 -0
  230. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/frame.py +0 -0
  231. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/gltf.py +0 -0
  232. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/migrate.py +0 -0
  233. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/proxy.py +0 -0
  234. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/reading_glb.py +0 -0
  235. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/registration.py +0 -0
  236. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/store_backed.py +0 -0
  237. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/transform.py +0 -0
  238. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/geometry/wkt.py +0 -0
  239. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/__init__.py +0 -0
  240. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/contours.py +0 -0
  241. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/crs.py +0 -0
  242. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/footprint.py +0 -0
  243. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/geojson.py +0 -0
  244. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/geopackage.py +0 -0
  245. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/geotiff.py +0 -0
  246. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/landscape.py +0 -0
  247. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/layer.py +0 -0
  248. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/shapefile.py +0 -0
  249. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/site.py +0 -0
  250. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/spatialite.py +0 -0
  251. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/gis/wkb.py +0 -0
  252. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/graph.py +0 -0
  253. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/graph_removal.py +0 -0
  254. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/hdto.py +0 -0
  255. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/iiif.py +0 -0
  256. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/__init__.py +0 -0
  257. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/base_importer.py +0 -0
  258. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/csv_importer.py +0 -0
  259. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/emjson_importer.py +0 -0
  260. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/fmpxml_importer.py +0 -0
  261. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/import_graphml.py +0 -0
  262. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/mapped_xlsx_importer.py +0 -0
  263. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/metashape_chain.py +0 -0
  264. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/metashape_project.py +0 -0
  265. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/pyarchinit_footprints.py +0 -0
  266. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/pyarchinit_importer.py +0 -0
  267. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/qualia_importer.py +0 -0
  268. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/rdf_importer.py +0 -0
  269. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/sheet_header.py +0 -0
  270. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/source_text.py +0 -0
  271. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/unified_xlsx_importer.py +0 -0
  272. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/unit_numbers.py +0 -0
  273. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/xlsx_importer.py +0 -0
  274. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/importer/xml_importer.py +0 -0
  275. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/indices.py +0 -0
  276. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/labels.py +0 -0
  277. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/landscape.py +0 -0
  278. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/language.py +0 -0
  279. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/links.py +0 -0
  280. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/__init__.py +0 -0
  281. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/authoring.py +0 -0
  282. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/emdb/generic_specialfind_mapping.json +0 -0
  283. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/emdb/site_properties_mapping.json +0 -0
  284. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/emdb/usm_mapping.json +0 -0
  285. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/generic/excel_to_graphml_mapping.json +0 -0
  286. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/pyarchinit/pyarchinit_us_mapping.json +0 -0
  287. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/registry.py +0 -0
  288. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/source_list/em_sourcelist_it.json +0 -0
  289. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/source_list/source_list_mapping.json +0 -0
  290. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/template_emdb_mapping.json +0 -0
  291. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/mappings/template_pyarchinit_mapping.json +0 -0
  292. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/merge/__init__.py +0 -0
  293. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/merge/graph_merger.py +0 -0
  294. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/multigraph/__init__.py +0 -0
  295. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/multigraph/multigraph.py +0 -0
  296. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/narrative/__init__.py +0 -0
  297. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/narrative/bake.py +0 -0
  298. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/narrative/generation.py +0 -0
  299. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/narrative/query.py +0 -0
  300. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/narrative/registry.py +0 -0
  301. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/narrative/site_story.py +0 -0
  302. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/__init__.py +0 -0
  303. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/annotation_region_node.py +0 -0
  304. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/author_node.py +0 -0
  305. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/base_node.py +0 -0
  306. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/combiner_node.py +0 -0
  307. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/document_node.py +0 -0
  308. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/dtc_acquisition_node.py +0 -0
  309. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/dtc_device_node.py +0 -0
  310. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/dtc_node.py +0 -0
  311. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/dtc_process_node.py +0 -0
  312. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/embargo_node.py +0 -0
  313. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/epoch_node.py +0 -0
  314. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/extractor_node.py +0 -0
  315. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/geo_position_node.py +0 -0
  316. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/georeferencing_node.py +0 -0
  317. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/graph_node.py +0 -0
  318. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/group_node.py +0 -0
  319. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/hdt_node.py +0 -0
  320. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/heritage_entity_node.py +0 -0
  321. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/landscape_surface_node.py +0 -0
  322. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/landscape_unit_node.py +0 -0
  323. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/license_node.py +0 -0
  324. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/narrative_node.py +0 -0
  325. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/paradata_node.py +0 -0
  326. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/periodization_node.py +0 -0
  327. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/project_node.py +0 -0
  328. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/property_node.py +0 -0
  329. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/representation_node.py +0 -0
  330. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/resource_file_node.py +0 -0
  331. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/resource_node.py +0 -0
  332. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/semantic_shape_node.py +0 -0
  333. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/stratigraphic_node.py +0 -0
  334. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/study_node.py +0 -0
  335. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/nodes/translation_node.py +0 -0
  336. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/ownership.py +0 -0
  337. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/paradata_view.py +0 -0
  338. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/periodization.py +0 -0
  339. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/photogrammetry/__init__.py +0 -0
  340. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/photogrammetry/delta.py +0 -0
  341. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/project_tree.py +0 -0
  342. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/property_source.py +0 -0
  343. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/publication.py +0 -0
  344. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/rapporti.py +0 -0
  345. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resolvers/__init__.py +0 -0
  346. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resolvers/builtin_rules.py +0 -0
  347. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resolvers/property_resolver.py +0 -0
  348. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/__init__.py +0 -0
  349. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/addresses.py +0 -0
  350. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/alignment.py +0 -0
  351. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/blend_folder.py +0 -0
  352. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/blend_room.py +0 -0
  353. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/consolidate.py +0 -0
  354. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/detail.py +0 -0
  355. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/files.py +0 -0
  356. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/fs_backend.py +0 -0
  357. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/graph_compose.py +0 -0
  358. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/locate.py +0 -0
  359. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/master_stamp.py +0 -0
  360. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/moved.py +0 -0
  361. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/object_store.py +0 -0
  362. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/resolver.py +0 -0
  363. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/s3_backend.py +0 -0
  364. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/storage_rows.py +0 -0
  365. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/tiles3tz.py +0 -0
  366. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/tileset_fit.py +0 -0
  367. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/resources/versions.py +0 -0
  368. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/rights.py +0 -0
  369. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/room_import/__init__.py +0 -0
  370. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/room_import/access.py +0 -0
  371. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/room_import/engine.py +0 -0
  372. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/room_import/errors.py +0 -0
  373. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/room_import/inventory.py +0 -0
  374. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/room_import/node.py +0 -0
  375. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/room_import/pack.py +0 -0
  376. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/room_import/trust.py +0 -0
  377. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/shelf/__init__.py +0 -0
  378. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/shelf/core.py +0 -0
  379. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/spatiotemporal.py +0 -0
  380. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/stamp/__init__.py +0 -0
  381. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/stamp/absorb.py +0 -0
  382. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/stamp/emit.py +0 -0
  383. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/stamp/hints.py +0 -0
  384. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/stamp/identity.py +0 -0
  385. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/study.py +0 -0
  386. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/__init__.py +0 -0
  387. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/_db_handle.py +0 -0
  388. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/_legacy_paradata_svgs.py +0 -0
  389. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/_workspace.py +0 -0
  390. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/conflict_resolver.py +0 -0
  391. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/edge_registry.py +0 -0
  392. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/graph_ingestor.py +0 -0
  393. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/graph_projector.py +0 -0
  394. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/graphml_writer.py +0 -0
  395. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/group_projector.py +0 -0
  396. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/group_store.py +0 -0
  397. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/ingest_result.py +0 -0
  398. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/paradata_store.py +0 -0
  399. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/pyarchinit_pg_importer.py +0 -0
  400. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/rapporti.py +0 -0
  401. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/uuid7.py +0 -0
  402. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/vocab_provider_core.py +0 -0
  403. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/vocab_types.py +0 -0
  404. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/yed_classifier.py +0 -0
  405. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/yed_detector.py +0 -0
  406. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/yed_group_walker.py +0 -0
  407. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/yed_import_pipeline.py +0 -0
  408. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/yed_rapporti_policy.py +0 -0
  409. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/sync/yed_table_parser.py +0 -0
  410. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/templates/em_data_template.xlsx +0 -0
  411. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/templates/em_palette_template.graphml +0 -0
  412. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/temporal/__init__.py +0 -0
  413. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/temporal/inference_engine.py +0 -0
  414. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/temporal/relative_chronology.py +0 -0
  415. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/__init__.py +0 -0
  416. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/consumer_drift.py +0 -0
  417. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/datamodel_i18n.py +0 -0
  418. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/deliverable_report.py +0 -0
  419. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/glyph_sheet.py +0 -0
  420. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/glyphs_from_svg.py +0 -0
  421. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/node_finder.py +0 -0
  422. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/ontology_html.py +0 -0
  423. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/sync_node_datamodel.py +0 -0
  424. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/tools/wheel_drift.py +0 -0
  425. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/transforms/__init__.py +0 -0
  426. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/transforms/aux_tracking.py +0 -0
  427. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/transforms/compact.py +0 -0
  428. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/transforms/materialize_continuity.py +0 -0
  429. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/translation.py +0 -0
  430. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/utils/__init__.py +0 -0
  431. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/utils/utils.py +0 -0
  432. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/utils/visual_layout.py +0 -0
  433. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy/zero_hour.py +0 -0
  434. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy.egg-info/dependency_links.txt +0 -0
  435. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy.egg-info/requires.txt +0 -0
  436. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/src/s3dgraphy.egg-info/top_level.txt +0 -0
  437. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_acquisition.py +0 -0
  438. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_acquisition_fs.py +0 -0
  439. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_add_resource.py +0 -0
  440. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_ai_validation_nodes.py +0 -0
  441. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_alternative_labels.py +0 -0
  442. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_alternative_sets.py +0 -0
  443. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_alternatives_hat.py +0 -0
  444. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_anastylosis_document_type.py +0 -0
  445. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_api_surface.py +0 -0
  446. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_asset_dtc_protocol.py +0 -0
  447. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_asset_list.py +0 -0
  448. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_asset_versions.py +0 -0
  449. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_aton_shapes.py +0 -0
  450. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_attach_only.py +0 -0
  451. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_authority_projection.py +0 -0
  452. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_authority_resolver.py +0 -0
  453. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_blend_folder.py +0 -0
  454. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_blend_locator.py +0 -0
  455. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_blend_room.py +0 -0
  456. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_bucket_alignment.py +0 -0
  457. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_canonical_document_rename.py +0 -0
  458. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_canvas_metadata_import.py +0 -0
  459. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_capture_acquisition.py +0 -0
  460. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_capture_rdf_class.py +0 -0
  461. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_chronology_on_request.py +0 -0
  462. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_cloud_placeholders.py +0 -0
  463. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_coating_unit.py +0 -0
  464. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_composite_node_name.py +0 -0
  465. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_connection_resolver.py +0 -0
  466. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_consolida_2.py +0 -0
  467. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_consolidate_compose.py +0 -0
  468. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_consumer_drift.py +0 -0
  469. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_container.py +0 -0
  470. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_container_layouts.py +0 -0
  471. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_containment_tpq.py +0 -0
  472. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_contemporaneity.py +0 -0
  473. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_contract.py +0 -0
  474. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_contract_consumer.py +0 -0
  475. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_convert_command.py +0 -0
  476. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_crdt.py +0 -0
  477. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_cycle_message_is_cheap.py +0 -0
  478. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_datamodel_fingerprint.py +0 -0
  479. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_datamodel_i18n.py +0 -0
  480. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_datum_operation.py +0 -0
  481. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_detail.py +0 -0
  482. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_deterministic_ids.py +0 -0
  483. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dev29_em_sourcelist.py +0 -0
  484. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dev29_file_set_stamp.py +0 -0
  485. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dev29_graphml_without_a_database.py +0 -0
  486. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dev29_image_set_texturing.py +0 -0
  487. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dev29_not_georeferenced.py +0 -0
  488. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dev29_one_act_n_outputs.py +0 -0
  489. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dev29_ttl_round_trip.py +0 -0
  490. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dev30_decisions.py +0 -0
  491. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_devices.py +0 -0
  492. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dissemination_tombstones.py +0 -0
  493. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dove_sta_il_testo.py +0 -0
  494. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dtc_corpus.py +0 -0
  495. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dtc_ingest.py +0 -0
  496. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dtc_neighbourhood.py +0 -0
  497. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dtc_projection.py +0 -0
  498. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_dtc_residency.py +0 -0
  499. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_edge_outside_graph.py +0 -0
  500. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_edge_ui_phrases.py +0 -0
  501. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_editorial.py +0 -0
  502. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_em_ttl_matches_the_datamodels.py +0 -0
  503. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_emjson_conformance.py +0 -0
  504. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_emjson_no_drawing_keys.py +0 -0
  505. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_emjson_roundtrip.py +0 -0
  506. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_emjson_schema_version.py +0 -0
  507. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_end_of_unit.py +0 -0
  508. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_epoch_instances.py +0 -0
  509. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_epoch_properties_and_sub_epochs.py +0 -0
  510. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_epoch_undated_import.py +0 -0
  511. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_explicit_node_type_marker.py +0 -0
  512. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_extracted_from_unit.py +0 -0
  513. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_file_frame.py +0 -0
  514. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_filtered_import.py +0 -0
  515. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_fit_affine_no_numpy.py +0 -0
  516. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_fmpxml_importer.py +0 -0
  517. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_fs_backend.py +0 -0
  518. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_functional_units.py +0 -0
  519. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_georeference_scene.py +0 -0
  520. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_gis_base.py +0 -0
  521. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_gis_site.py +0 -0
  522. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_gltf_stitch.py +0 -0
  523. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_glyph_paths.py +0 -0
  524. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_graph_header_code.py +0 -0
  525. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_graph_helpers_indexed.py +0 -0
  526. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_graph_indices_alive.py +0 -0
  527. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_graph_indices_edges.py +0 -0
  528. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_graph_removal.py +0 -0
  529. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_graph_scope_migration.py +0 -0
  530. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_hdto_glyphs.py +0 -0
  531. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_hdto_projection.py +0 -0
  532. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_hdto_study.py +0 -0
  533. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_header_key_aliases.py +0 -0
  534. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_i_generi_dei_passi.py +0 -0
  535. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_iiif.py +0 -0
  536. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_il_modo_d_accesso.py +0 -0
  537. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_il_modo_dal_relay.py +0 -0
  538. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_il_proprietario_si_legge.py +0 -0
  539. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_il_riallineamento.py +0 -0
  540. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_import_without_residues.py +0 -0
  541. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_importer_edge_hygiene.py +0 -0
  542. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_impronte_saggi_tagli.py +0 -0
  543. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_ipynb_exporter.py +0 -0
  544. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_iri_extendedmatrix.py +0 -0
  545. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_issue27_small_points.py +0 -0
  546. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_la_lingua_alla_nascita.py +0 -0
  547. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_la_lingua_dei_dati.py +0 -0
  548. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_la_lingua_nell_op.py +0 -0
  549. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_la_riga_d_intestazione.py +0 -0
  550. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_lab_orizzonti.py +0 -0
  551. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_landscape_ontology.py +0 -0
  552. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_latex_exporter.py +0 -0
  553. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_le_traduzioni.py +0 -0
  554. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_lod_levels.py +0 -0
  555. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_lossless_roundtrip.py +0 -0
  556. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_mapping_authoring.py +0 -0
  557. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_mapping_csv_and_relations.py +0 -0
  558. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_masonry_unit.py +0 -0
  559. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_material_color.py +0 -0
  560. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_merge_conflicts.py +0 -0
  561. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_metashape_project.py +0 -0
  562. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_migrate_legacy_proxy.py +0 -0
  563. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_authorship.py +0 -0
  564. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_bake_docx.py +0 -0
  565. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_figures.py +0 -0
  566. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_generation.py +0 -0
  567. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_mentions.py +0 -0
  568. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_node.py +0 -0
  569. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_query.py +0 -0
  570. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_scaffolder.py +0 -0
  571. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_site_place.py +0 -0
  572. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_narrative_unvalidated_export.py +0 -0
  573. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_node_datamodel_registry.py +0 -0
  574. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_node_finder.py +0 -0
  575. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_node_type_map_integrity.py +0 -0
  576. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_one_resolver.py +0 -0
  577. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_one_spelling_writers.py +0 -0
  578. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_ontology_html.py +0 -0
  579. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_op_vocabulary.py +0 -0
  580. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_part_twins.py +0 -0
  581. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_pg_importer.py +0 -0
  582. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_photogrammetry_delta.py +0 -0
  583. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_physical_relation_spellings.py +0 -0
  584. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_piu_indirizzi.py +0 -0
  585. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_promote_keeps_proxy_type.py +0 -0
  586. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_promotion.py +0 -0
  587. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_property_as_source.py +0 -0
  588. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_property_owners.py +0 -0
  589. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_proxy_resource.py +0 -0
  590. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_proxy_retype.py +0 -0
  591. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_psx_locator.py +0 -0
  592. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_pyarchinit_tier2.py +0 -0
  593. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_qualia_dai_d7_d8.py +0 -0
  594. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_rdf_embedding.py +0 -0
  595. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_rdf_reverse_edges.py +0 -0
  596. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_rdf_roundtrip.py +0 -0
  597. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_rdf_sub_epoch_direction.py +0 -0
  598. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_reading_coords.py +0 -0
  599. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_reading_glb.py +0 -0
  600. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_reading_migration.py +0 -0
  601. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_reading_place.py +0 -0
  602. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_reading_rdf.py +0 -0
  603. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_recompute_warnings.py +0 -0
  604. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_registration.py +0 -0
  605. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_release.py +0 -0
  606. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_reproject.py +0 -0
  607. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_resource_file_node.py +0 -0
  608. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_resource_files_implicit.py +0 -0
  609. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_resource_layer.py +0 -0
  610. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_resource_representations.py +0 -0
  611. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_resource_revision.py +0 -0
  612. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_resource_tier.py +0 -0
  613. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_reverse_edges.py +0 -0
  614. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_rm_container_node_group.py +0 -0
  615. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_room_import.py +0 -0
  616. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_room_import_access.py +0 -0
  617. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_room_import_inventory.py +0 -0
  618. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_room_import_trust.py +0 -0
  619. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_s3_backend.py +0 -0
  620. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_semantic_purity.py +0 -0
  621. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_series_vsf.py +0 -0
  622. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_shelf.py +0 -0
  623. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_shelf_facets.py +0 -0
  624. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_shelf_hatting.py +0 -0
  625. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_shelf_role_uri_table.py +0 -0
  626. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_shipped_mappings.py +0 -0
  627. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_source_list_mapping.py +0 -0
  628. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_source_text.py +0 -0
  629. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_spatiotemporal_entities.py +0 -0
  630. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_special_find_definitions.py +0 -0
  631. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_stable_study_code.py +0 -0
  632. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_stamp.py +0 -0
  633. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_stamp_hints.py +0 -0
  634. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_stamp_title_description.py +0 -0
  635. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_storage_rows.py +0 -0
  636. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_store_backed_geometry.py +0 -0
  637. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_stratiminer_api.py +0 -0
  638. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_study_metadata.py +0 -0
  639. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_threed_instances.py +0 -0
  640. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_threed_style.py +0 -0
  641. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_tileset_fit.py +0 -0
  642. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_tileset_resource.py +0 -0
  643. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_timbra_master.py +0 -0
  644. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_transform_form.py +0 -0
  645. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_ttl_roundtrip.py +0 -0
  646. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_unit_definition.py +0 -0
  647. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_unit_numbers.py +0 -0
  648. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_use_profiles.py +0 -0
  649. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_valore_proprieta_doppio.py +0 -0
  650. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_verifica_provenance.py +0 -0
  651. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_version_for.py +0 -0
  652. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_visual_assets.py +0 -0
  653. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_wheel_drift.py +0 -0
  654. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_xlsx_containment_and_unknown_bounds.py +0 -0
  655. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_xlsx_importer_graph_init.py +0 -0
  656. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/tests/test_xlsx_source_column.py +0 -0
  657. {s3dgraphy-1.6.0.dev104 → s3dgraphy-1.6.0.dev106}/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.dev104
3
+ Version: 1.6.0.dev106
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.dev104"
7
+ version = "1.6.0.dev106"
8
8
  description = "3D Stratigraphic Graph Management Library for archaeological and heritage applications"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1160,7 +1160,8 @@
1160
1160
  "properties": {
1161
1161
  "name": "P1_is_identified_by",
1162
1162
  "description": "P3_has_note",
1163
- "frame": {"kind": "node_element", "em_json": "data.frame", "rdf": null, "same_as": "ResourceNode.properties.frame", "note": "1.6.38: the frame of the container's alternative (a tileset of the whole survey) when it is said on the container: {crs, shift, note, source}, as ResourceNode.frame. The resource's own frame wins."}
1163
+ "frame": {"kind": "node_element", "em_json": "data.frame", "rdf": null, "same_as": "ResourceNode.properties.frame", "note": "1.6.38: the frame of the container's alternative (a tileset of the whole survey) when it is said on the container: {crs, shift, note, source}, as ResourceNode.frame. The resource's own frame wins."},
1164
+ "active_alternative": {"kind": "node_element", "em_json": "data.active_alternative", "rdf": null, "values": {"<use> | <target> | *": "container | members"}, "note": "MICRO-ASSETS-LIVELLI (E.D., 13 Nov 2026), proposed: which alternative the container lights, kept in the graph so every reader gives the same answer. Inside a container the meshes (its members) and the tileset of the whole (its own alternative, hatted by the container with has_linked_resource) are alternatives of each other: one is seen, or the other. The map goes from a use (heriverse, web, realtime…) or a target of EMStudio's Archive › Assets (mobile, web, desk) to «container» (the tileset) or «members» (the models, each with its version); «*» for every use not named. No key: the rule of resources.alternatives.choose_alternative (the tileset where it declares the use or fits the target's band). Written by resources.alternatives.set_active_alternative; read by choose_alternative and by asset_list (the budget counts only the alternative lit; the meshes a lit tileset covers get no proposal of reduction). A choice of presentation, not a fact of the survey: it belongs to the container as its frame does, and says nothing of the epochs, which stay on the members."}
1164
1165
  }
1165
1166
  }
1166
1167
  }
@@ -1,4 +1,4 @@
1
- __version__ = "1.6.0.dev104"
1
+ __version__ = "1.6.0.dev106"
2
2
  __datamodel_version__ = "1.5.5" # s3Dgraphy connections datamodel version
3
3
 
4
4
  # s3Dgraphy/__init__.py
@@ -549,12 +549,16 @@ def alternative_sets(graph, *, bounds: Optional[Dict[str, Any]] = None,
549
549
  f"{len(epochs(hat_id))} epochs ({', '.join(name(x) for x in epochs(hat_id))}): "
550
550
  f"an alternative does not cross epochs",
551
551
  "cure": "one sub-container per epoch, each with its own alternative"})
552
- return {"hat": hat_id, "hat_kind": kind, "name": name(hat_id),
553
- "node_type": str(getattr(node, "node_type", "") or ""),
554
- "epochs": epochs(hat_id), "assets": assets, "alternatives": alts,
555
- "reasons": reasons, "members": members,
556
- "covers": covers if kind == "container" else [hat_id],
557
- "coverage": coverage, "parent": parent}
552
+ out = {"hat": hat_id, "hat_kind": kind, "name": name(hat_id),
553
+ "node_type": str(getattr(node, "node_type", "") or ""),
554
+ "epochs": epochs(hat_id), "assets": assets, "alternatives": alts,
555
+ "reasons": reasons, "members": members,
556
+ "covers": covers if kind == "container" else [hat_id],
557
+ "coverage": coverage, "parent": parent}
558
+ if kind == "container":
559
+ # MICRO-ASSETS-LIVELLI · the choice written in the graph, by use
560
+ out["active"] = active_choices(graph, hat_id)
561
+ return out
558
562
 
559
563
  seen: set = set()
560
564
  top: List[Dict[str, Any]] = []
@@ -665,6 +669,10 @@ def choose_alternative(aset: Dict[str, Any], use: Any,
665
669
  from .versions import choose_version
666
670
  uses = [use] if isinstance(use, str) else list(use or [])
667
671
  hat = aset.get("hat")
672
+ if force is None and aset.get("hat_kind") == "container":
673
+ # MICRO-ASSETS-LIVELLI (E.D., 13 Nov 2026) · the choice the graph
674
+ # keeps for these uses (:func:`set_active_alternative`) is the hand's
675
+ force = active_of(aset.get("active") or {}, uses)
668
676
  if aset.get("hat_kind") != "container":
669
677
  ch = choose_version(aset.get("alternatives") or [], uses, prefer_level)
670
678
  if ch is None:
@@ -701,3 +709,185 @@ def choose_alternative(aset: Dict[str, Any], use: Any,
701
709
  if out["use"] is None:
702
710
  out["note"] = f"no version for {', '.join(uses) or 'no use'}: the members, each with its master"
703
711
  return out
712
+
713
+
714
+ # ── MICRO-ASSETS-LIVELLI · the active alternative, kept in the graph ─────────
715
+ #
716
+ # E.D., 13 Nov 2026: inside a container the meshes and the tileset are, by
717
+ # default, ALTERNATIVES of each other — one is seen, or the other. The person
718
+ # may change the one lit for a use, and the choice is written in the graph,
719
+ # where every reader (EMStudio, EM Tools, Heriverse) finds the same answer: a
720
+ # property of the CONTAINER, ``data.active_alternative`` (node datamodel,
721
+ # RepresentationModelNodeGroup.properties.active_alternative), a map from a
722
+ # use — or a target of Archive › Assets (``mobile``, ``web``, ``desk``) — to
723
+ # ``"container"`` (its own alternative, the tileset) or ``"members"`` (the
724
+ # models, each with its version); ``"*"`` for every use not named. No key: the
725
+ # rule of :func:`choose_alternative` (the tileset when it declares the use).
726
+
727
+ ACTIVE_KEY = "active_alternative"
728
+ ACTIVE_WHICH = ("container", "members")
729
+
730
+
731
+ def active_choices(graph, group_id: str) -> Dict[str, str]:
732
+ """The choices a container keeps, ``{use: "container" | "members"}``
733
+ (only well-formed entries)."""
734
+ node = _node(graph, group_id)
735
+ raw = _data(node).get(ACTIVE_KEY) if node is not None else None
736
+ if not isinstance(raw, dict):
737
+ return {}
738
+ return {str(k): str(v) for k, v in raw.items() if v in ACTIVE_WHICH}
739
+
740
+
741
+ def active_of(choices: Dict[str, str], uses: Iterable[str]) -> Optional[str]:
742
+ """The choice for these uses: the first use named, else ``"*"``, else
743
+ None (the rule decides)."""
744
+ for u in list(uses or []):
745
+ if u in choices:
746
+ return choices[u]
747
+ return choices.get("*")
748
+
749
+
750
+ def set_active_alternative(graph, group_id: str, which: Optional[str],
751
+ use: str = "*") -> Dict[str, Any]:
752
+ """Write which alternative a container lights for ``use`` (``"*"``: every
753
+ use not named): ``"container"`` (its own alternative, the tileset) or
754
+ ``"members"`` (its models); ``None`` takes the choice away (the rule
755
+ decides again). Idempotent. → ``{group, use, which, choices}``."""
756
+ node = _node(graph, group_id)
757
+ if getattr(node, "node_type", "") != GROUP_NODE_TYPE:
758
+ raise ValueError(f"{group_id!r} is not an RM container")
759
+ if which is not None and which not in ACTIVE_WHICH:
760
+ raise ValueError(f"which is one of {ACTIVE_WHICH} or None, not {which!r}")
761
+ d = _data(node)
762
+ choices = active_choices(graph, group_id)
763
+ if which is None:
764
+ choices.pop(str(use), None)
765
+ else:
766
+ choices[str(use)] = which
767
+ if choices:
768
+ d[ACTIVE_KEY] = choices
769
+ else:
770
+ d.pop(ACTIVE_KEY, None)
771
+ return {"group": group_id, "use": use, "which": which, "choices": dict(choices)}
772
+
773
+
774
+ # ── MICRO-ASSETS-LIVELLI · the containers by hand (Archive › Assets) ─────────
775
+ #
776
+ # A row dragged onto a container, a container made from a selection: the
777
+ # graph's own gestures, so that EMStudio's page carries no rule of its own.
778
+ # Membership is m:n (E.D. 23 Oct 2026); the file on disk never moves — the
779
+ # graph changes, not the tree of folders.
780
+
781
+ def put_in_container(graph, node_id: str, group_id: str, *,
782
+ move_from: Optional[str] = None) -> Dict[str, Any]:
783
+ """``node_id`` (a model or a container) becomes a MEMBER of ``group_id``
784
+ (``is_in_representation_model_group``). With ``move_from`` it leaves that
785
+ container (a move); without, it is added and keeps the others (m:n).
786
+ A container cannot enter itself nor one of its own members. Idempotent.
787
+ → ``{node, group, added, left}``."""
788
+ group = _node(graph, group_id)
789
+ if getattr(group, "node_type", "") != GROUP_NODE_TYPE:
790
+ raise ValueError(f"{group_id!r} is not an RM container")
791
+ node = _node(graph, node_id)
792
+ if node is None:
793
+ raise ValueError(f"{node_id!r} is not a node of this graph")
794
+ if node_id == group_id or (getattr(node, "node_type", "") == GROUP_NODE_TYPE
795
+ and group_id in _inside(graph, node_id)):
796
+ raise ValueError(f"{getattr(node, 'name', node_id)!r} cannot enter a container it holds")
797
+ left = []
798
+ if move_from and move_from != group_id:
799
+ for e in list(graph.edges):
800
+ if e.edge_type == EDGE_MEMBER and e.edge_source == node_id and e.edge_target == move_from:
801
+ graph.remove_edge(e.edge_id)
802
+ left.append(move_from)
803
+ added = group_id not in containers_of(graph, node_id)
804
+ if added:
805
+ graph.add_edge(f"{node_id}_{EDGE_MEMBER}_{group_id}", node_id, group_id, EDGE_MEMBER)
806
+ return {"node": node_id, "group": group_id, "added": added, "left": left}
807
+
808
+
809
+ def _inside(graph, group_id: str) -> List[str]:
810
+ """Every container under ``group_id`` (its sub-containers, deep)."""
811
+ out, todo = [], [group_id]
812
+ while todo:
813
+ g = todo.pop()
814
+ for m in members_of(graph, g):
815
+ if getattr(_node(graph, m), "node_type", "") == GROUP_NODE_TYPE and m not in out:
816
+ out.append(m)
817
+ todo.append(m)
818
+ return out
819
+
820
+
821
+ def create_container(graph, label: str, *, epoch_id: Optional[str] = None,
822
+ document_id: Optional[str] = None,
823
+ members: Sequence[str] = (), group_id: Optional[str] = None) -> Dict[str, Any]:
824
+ """A new RM container named ``label``: its epoch reaches it with
825
+ ``has_representation_model`` (EpochNode → container, admitted by the
826
+ connections datamodel; :func:`container_own_epochs` reads it — the
827
+ «default» epochs, the members keep theirs), the Document that publishes it
828
+ the same (Document → container, as «Survey 2015» under D.01), and
829
+ ``members`` put in it (added: m:n). The id follows :func:`group_id_for`
830
+ (from the document when given), ``-2``… when taken.
831
+ → ``{group_id, created, members}``."""
832
+ from ..nodes.group_node import RepresentationModelNodeGroup
833
+ label = str(label or "").strip()
834
+ if not label:
835
+ raise ValueError("a container needs a name")
836
+ for ref, kind in ((epoch_id, "EpochNode"), (document_id, None)):
837
+ if ref and _node(graph, ref) is None:
838
+ raise ValueError(f"{ref!r} is not a node of this graph")
839
+ if ref and kind and getattr(_node(graph, ref), "node_type", "") != kind:
840
+ raise ValueError(f"{ref!r} is not an epoch")
841
+ gid = group_id or group_id_for(label, document_id or "")
842
+ base, n = gid, 2
843
+ while _node(graph, gid) is not None:
844
+ gid = f"{base}-{n}"
845
+ n += 1
846
+ graph.add_node(RepresentationModelNodeGroup(node_id=gid, name=label, description=""))
847
+ for src in (epoch_id, document_id):
848
+ if src:
849
+ graph.add_edge(f"{src}_has_representation_model_{gid}", src, gid,
850
+ "has_representation_model")
851
+ put = [m for m in members if put_in_container(graph, m, gid)["added"]]
852
+ return {"group_id": gid, "created": True, "members": put}
853
+
854
+
855
+ def rename_container(graph, group_id: str, label: str) -> Dict[str, Any]:
856
+ """A container's name (its id stays)."""
857
+ node = _node(graph, group_id)
858
+ if getattr(node, "node_type", "") != GROUP_NODE_TYPE:
859
+ raise ValueError(f"{group_id!r} is not an RM container")
860
+ label = str(label or "").strip()
861
+ if not label:
862
+ raise ValueError("a container needs a name")
863
+ old = node.name
864
+ node.name = label
865
+ return {"group": group_id, "old": old, "name": label}
866
+
867
+
868
+ def empty_container(graph, group_id: str) -> Dict[str, Any]:
869
+ """Every member leaves the container (their other containers, epochs and
870
+ documents stay); its own alternative (``has_linked_resource``) stays
871
+ with it. → ``{group, left}``."""
872
+ if getattr(_node(graph, group_id), "node_type", "") != GROUP_NODE_TYPE:
873
+ raise ValueError(f"{group_id!r} is not an RM container")
874
+ left = []
875
+ for e in list(graph.edges):
876
+ if e.edge_type == EDGE_MEMBER and e.edge_target == group_id:
877
+ graph.remove_edge(e.edge_id)
878
+ left.append(e.edge_source)
879
+ return {"group": group_id, "left": left}
880
+
881
+
882
+ def remove_container(graph, group_id: str) -> Dict[str, Any]:
883
+ """An EMPTY container goes, with its edges (its epochs, its document, the
884
+ container it is in). One with members, or with an alternative of its own,
885
+ is refused: empty it first, or move its alternative."""
886
+ if getattr(_node(graph, group_id), "node_type", "") != GROUP_NODE_TYPE:
887
+ raise ValueError(f"{group_id!r} is not an RM container")
888
+ if members_of(graph, group_id):
889
+ raise ValueError("the container is not empty: empty it first")
890
+ if any(e.edge_type == EDGE_HAT and e.edge_source == group_id for e in graph.edges):
891
+ raise ValueError("the container has an alternative of its own: move it to another first")
892
+ graph.remove_node(group_id)
893
+ return {"group": group_id, "removed": True}
@@ -393,7 +393,19 @@ def cover_by_tilesets(graph, assets: List[Dict[str, Any]]) -> Dict[str, int]:
393
393
  («serve per epoca: il tileset non si divide»), or a mesh is cited alone in
394
394
  a narrative. Where the tileset does not fit, the meshes keep their
395
395
  proposal and say why the tileset does not cover them yet. → the meshes
396
- covered per target."""
396
+ covered per target.
397
+
398
+ MICRO-ASSETS-LIVELLI (E.D., 13 Nov 2026) · meshes and tileset are
399
+ ALTERNATIVES of each other: the container's choice kept in the graph
400
+ (:func:`.alternatives.set_active_alternative`, by target, by use or
401
+ ``*``) wins over the rule — ``container`` covers the meshes even where
402
+ the tileset is out of its band or the meshes lie in several epochs (said
403
+ in their why), ``members`` switches the tileset off for that target (state
404
+ ``na``, ``off_by_choice``) and leaves the meshes their proposals. Each
405
+ container row says, per target, the alternative lit (``alternative``:
406
+ ``{active, chosen}``). A member WITHOUT an epoch is not «another epoch»:
407
+ only the members that have epochs are compared."""
408
+ from .alternatives import active_choices, active_of
397
409
  cited = None
398
410
  n = {k: 0 for k in STREAMED}
399
411
  for c in assets:
@@ -401,26 +413,50 @@ def cover_by_tilesets(graph, assets: List[Dict[str, Any]]) -> Dict[str, int]:
401
413
  continue
402
414
  tv = next((v for v in c["versions"] if v["tileset"] and v["id"] in
403
415
  {c["targets"][k]["loads"] for k in STREAMED}), None)
416
+ if tv is None:
417
+ tv = next((v for v in c["versions"] if v["tileset"]), None)
404
418
  if tv is None:
405
419
  continue
406
420
  members = [a for a in assets if a is not c and a["kind"] == "rm"
407
421
  and any(x["id"] == c["id"] for x in a["containers"])]
422
+ choices = active_choices(graph, c["id"])
423
+ c["alternative"] = {}
408
424
  if not members:
409
425
  continue
410
426
  if cited is None:
411
427
  cited = _cited_alone(graph)
412
- epochs = {tuple(sorted(a["epochs"])) for a in members}
428
+ epochs = {tuple(sorted(a["epochs"])) for a in members if a["epochs"]}
413
429
  by_epoch = len(epochs) > 1
414
- for a in members:
415
- alone = ("serve per epoca: il tileset non si divide" if by_epoch else
416
- f"usata da sola nella narrazione «{cited[a['id']]}»: il tileset non si divide"
417
- if a["id"] in cited else "")
418
- for k in STREAMED:
419
- tc, cell = c["targets"][k], a["targets"][k]
430
+ for k in STREAMED:
431
+ chosen = active_of(choices, [k, *TARGETS[k]["uses"]])
432
+ tc = c["targets"][k]
433
+ if chosen == "members":
434
+ c["alternative"][k] = {"active": "members", "chosen": True}
435
+ if tc["state"] != "na":
436
+ for v in c["versions"]:
437
+ if k in v["loaded_by"]:
438
+ v["loaded_by"].remove(k)
439
+ say = "spento: per questo uso sono scelte le mesh del contenitore"
440
+ c["targets"][k] = {**tc, "state": "na", "why": say, "off_by_choice": True,
441
+ "proposal": {"tool": "keep", "triangles": None, "texture": None,
442
+ "ktx2": False, "why": say}}
443
+ for a in members:
444
+ cell = a["targets"][k]
445
+ if cell["state"] != "na":
446
+ cell["tileset_of"] = {"id": c["id"], "name": c["name"], "state": "na"}
447
+ continue
448
+ lit = chosen == "container" or tc["state"] == "ok"
449
+ c["alternative"][k] = {"active": "container" if lit else "members", "chosen": chosen is not None}
450
+ for a in members:
451
+ alone = ("" if chosen == "container" else
452
+ "serve per epoca: il tileset non si divide" if by_epoch else
453
+ f"usata da sola nella narrazione «{cited[a['id']]}»: il tileset non si divide"
454
+ if a["id"] in cited else "")
455
+ cell = a["targets"][k]
420
456
  if cell["state"] == "na":
421
457
  continue
422
458
  cell["tileset_of"] = {"id": c["id"], "name": c["name"], "state": tc["state"]}
423
- if tc["state"] != "ok":
459
+ if not lit:
424
460
  cell["why"] = f"{cell['why']} (il tileset di {c['name']} non la copre: {tc['why']})"
425
461
  continue
426
462
  if alone:
@@ -429,14 +465,16 @@ def cover_by_tilesets(graph, assets: List[Dict[str, Any]]) -> Dict[str, int]:
429
465
  cell["proposal"] = {**cell["proposal"], "why": f"{alone} — {cell['proposal']['why']}"}
430
466
  continue
431
467
  say = f"coperta dal tileset di {c['name']}"
468
+ if chosen == "container":
469
+ say += " (scelto nel grafo)"
432
470
  for v in a["versions"]:
433
471
  if k in v["loaded_by"]:
434
472
  v["loaded_by"].remove(k)
435
473
  a["targets"][k] = {"state": "na", "loads": cell["loads"], "why": say,
436
474
  "covered_by": {"id": c["id"], "name": c["name"], "version": tv["id"]},
437
475
  "tileset_of": cell["tileset_of"],
438
- "proposal": {"tool": "keep", "triangles": None, "texture": None, "ktx2": False,
439
- "why": say}}
476
+ "proposal": {"tool": "keep", "triangles": None, "texture": None,
477
+ "ktx2": False, "why": say}}
440
478
  n[k] += 1
441
479
  return n
442
480
 
@@ -1484,6 +1484,42 @@ def list_versions(folder: str, model: Optional[str] = None, *, measure: bool = T
1484
1484
  return out
1485
1485
 
1486
1486
 
1487
+ IMAGE_EXTS = (".png", ".jpg", ".jpeg", ".ktx2", ".webp", ".basis", ".tga", ".tif", ".tiff", ".exr")
1488
+
1489
+
1490
+ def version_files(entry: str) -> Dict[str, Any]:
1491
+ """Every file that goes with ONE version, wherever it is (MICRO-ASSETS-
1492
+ LIVELLI, E.D. 13 Nov 2026: the versions the graph cites, not only those in
1493
+ a ``versions/`` folder): the ``.glb``/``.stl`` itself, or a ``.gltf`` with
1494
+ its ``.bin`` and textures — the whole folder when the glTF sits in a
1495
+ folder named as a version (``<model>@<level>…/``) — and its stamp and
1496
+ hints beside it. → ``{entry, path, files, bytes, images}`` (``images``:
1497
+ the texture files among ``files``, what a removal may keep when another
1498
+ geometry uses them). A file that cannot be read is listed alone."""
1499
+ entry = os.path.abspath(entry)
1500
+ path = entry
1501
+ parent = os.path.dirname(entry)
1502
+ files: List[str] = [entry]
1503
+ if entry.lower().endswith(".gltf") and parse_version_name(os.path.basename(parent)) is not None:
1504
+ path = parent
1505
+ for root, _dirs, fs in os.walk(parent):
1506
+ files += [os.path.join(root, f) for f in fs]
1507
+ elif entry.lower().endswith(".gltf"):
1508
+ try:
1509
+ files += list(measure_gltf(entry)["files"])
1510
+ except (OSError, ValueError, KeyError, IndexError, struct.error):
1511
+ pass
1512
+ side = sidecars(entry)
1513
+ if path != entry:
1514
+ outer = sidecars(path)
1515
+ side = {k: side[k] or outer[k] for k in side}
1516
+ files += [f for f in side.values() if f]
1517
+ files = sorted(set(os.path.abspath(f) for f in files if os.path.exists(f)))
1518
+ return {"entry": entry, "path": path, "files": files,
1519
+ "bytes": sum(os.path.getsize(f) for f in files if os.path.isfile(f)),
1520
+ "images": [f for f in files if f.lower().endswith(IMAGE_EXTS)]}
1521
+
1522
+
1487
1523
  def stl_triangles(path: str) -> Optional[int]:
1488
1524
  """The triangles of an STL: a binary one says it in its header, an ASCII
1489
1525
  one counts its ``facet`` lines. None when it cannot be read."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: s3dgraphy
3
- Version: 1.6.0.dev104
3
+ Version: 1.6.0.dev106
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>
@@ -443,6 +443,7 @@ tests/test_api_surface.py
443
443
  tests/test_asset_dtc_protocol.py
444
444
  tests/test_asset_list.py
445
445
  tests/test_asset_versions.py
446
+ tests/test_assets_livelli.py
446
447
  tests/test_aton_shapes.py
447
448
  tests/test_attach_only.py
448
449
  tests/test_authority_projection.py
@@ -0,0 +1,140 @@
1
+ """MICRO-ASSETS-LIVELLI (E.D., 13 Nov 2026) · meshes and tileset as
2
+ alternatives in a container, the choice kept in the graph, and the
3
+ containers by hand (a row dragged onto a container, a container made from a
4
+ selection)."""
5
+
6
+ import pytest
7
+
8
+ from s3dgraphy.nodes.epoch_node import EpochNode
9
+ from s3dgraphy.resources import alternatives as ALT
10
+ from s3dgraphy.resources import asset_list as AL
11
+
12
+ from tests.test_tileset_fit import _study_with_members
13
+
14
+ FITS = {"tiles": 1, "read": 1, "per_tile": [[10, 64]], "max_triangles": 10, "max_texture_side": 64}
15
+ BIG = {"tiles": 2, "read": 2, "per_tile": [[9000, 1024], [9000, 512]], "max_triangles": 9000, "max_texture_side": 1024}
16
+
17
+
18
+ def _by_name(g, st):
19
+ return {x["name"]: x for x in AL.asset_list(g, tiles=lambda e: st)["assets"]}
20
+
21
+
22
+ def test_a_member_without_epoch_is_not_another_epoch():
23
+ # Templu Mare v9, Survey2015: nine meshes in «XX sec» and one RMSF with no
24
+ # epoch — the tileset covered none of them («serve per epoca»)
25
+ g, _t = _study_with_members()
26
+ g.add_node(EpochNode(node_id="e1", name="XX sec", start_time=1900, end_time=2000))
27
+ g.add_edge("x1", "e1", "rm_rb1", "has_representation_model")
28
+ a = _by_name(g, FITS)
29
+ assert a["rm_rb1"]["epochs"] == ["XX sec"] and a["rm_rb2"]["epochs"] == []
30
+ for m in ("rm_rb1", "rm_rb2"):
31
+ assert a[m]["targets"]["web"]["covered_by"]["name"] == "Survey2015"
32
+ assert a["Survey2015"]["alternative"]["web"] == {"active": "container", "chosen": False}
33
+
34
+
35
+ def test_the_choice_in_the_graph_lights_the_members_or_the_tileset():
36
+ g, _t = _study_with_members()
37
+ out = ALT.set_active_alternative(g, "grp", "members", use="web")
38
+ assert out["choices"] == {"web": "members"}
39
+ assert g.find_node_by_id("grp").data[ALT.ACTIVE_KEY] == {"web": "members"}
40
+ a = _by_name(g, FITS)
41
+ web = a["Survey2015"]["targets"]["web"]
42
+ assert web["state"] == "na" and web["off_by_choice"] and "web" not in a["Survey2015"]["versions"][-1]["loaded_by"]
43
+ assert a["Survey2015"]["alternative"]["web"] == {"active": "members", "chosen": True}
44
+ assert not a["rm_rb1"]["targets"]["web"].get("covered_by")
45
+ # the other targets keep the rule
46
+ assert a["rm_rb1"]["targets"]["desk"]["covered_by"]
47
+ # «container» for every use: covers even where the tileset is over the band
48
+ ALT.set_active_alternative(g, "grp", None, use="web")
49
+ ALT.set_active_alternative(g, "grp", "container")
50
+ a = _by_name(g, BIG)
51
+ assert a["Survey2015"]["targets"]["mobile"]["state"] == "todo"
52
+ cell = a["rm_rb1"]["targets"]["mobile"]
53
+ assert cell["covered_by"] and cell["why"].endswith("(scelto nel grafo)")
54
+ assert a["Survey2015"]["alternative"]["mobile"] == {"active": "container", "chosen": True}
55
+ # taken away: the rule again, and no key left on the node
56
+ ALT.set_active_alternative(g, "grp", None)
57
+ assert ALT.ACTIVE_KEY not in g.find_node_by_id("grp").data
58
+ with pytest.raises(ValueError):
59
+ ALT.set_active_alternative(g, "grp", "both")
60
+ with pytest.raises(ValueError):
61
+ ALT.set_active_alternative(g, "rm_rb1", "members")
62
+
63
+
64
+ def test_choose_alternative_reads_the_graphs_choice():
65
+ g, _t = _study_with_members()
66
+ ALT.set_active_alternative(g, "grp", "members", use="heriverse")
67
+ s = ALT.find_set(ALT.alternative_sets(g), "grp")
68
+ assert s["active"] == {"heriverse": "members"}
69
+ assert ALT.choose_alternative(s, ["heriverse"])["level"] == "members"
70
+ assert ALT.choose_alternative(s, ["heriverse"], force="container")["level"] == "container"
71
+
72
+
73
+ def test_put_in_container_adds_or_moves_and_refuses_a_loop():
74
+ g, _t = _study_with_members()
75
+ made = ALT.create_container(g, "Fase 2013", members=["rm_rb1"])
76
+ gid = made["group_id"]
77
+ assert gid == "rmgroup_Fase_2013" and made["members"] == ["rm_rb1"]
78
+ assert sorted(ALT.containers_of(g, "rm_rb1")) == sorted(["grp", gid]) # m:n: added
79
+ out = ALT.put_in_container(g, "rm_rb2", gid, move_from="grp")
80
+ assert out["added"] and out["left"] == ["grp"] and ALT.containers_of(g, "rm_rb2") == [gid]
81
+ assert not ALT.put_in_container(g, "rm_rb2", gid)["added"] # idempotent
82
+ ALT.put_in_container(g, gid, "grp")
83
+ with pytest.raises(ValueError):
84
+ ALT.put_in_container(g, "grp", gid) # grp holds gid
85
+ with pytest.raises(ValueError):
86
+ ALT.put_in_container(g, gid, gid)
87
+
88
+
89
+ def test_create_with_epoch_and_document_rename_empty_remove():
90
+ from s3dgraphy.nodes.document_node import DocumentNode
91
+ g, _t = _study_with_members()
92
+ g.add_node(EpochNode(node_id="e13", name="2013", start_time=2013, end_time=2013))
93
+ g.add_node(DocumentNode(node_id="D.09", name="D.09", description=""))
94
+ gid = ALT.create_container(g, "Rilievo 2013", epoch_id="e13", document_id="D.09")["group_id"]
95
+ assert gid == "D.09_rmgroup"
96
+ assert ALT.container_own_epochs(g, gid) == ["e13"]
97
+ assert any(e.edge_type == "has_representation_model" and e.edge_source == "D.09" and e.edge_target == gid
98
+ for e in g.edges)
99
+ assert ALT.create_container(g, "Rilievo 2013", document_id="D.09")["group_id"] == "D.09_rmgroup-2"
100
+ with pytest.raises(ValueError):
101
+ ALT.create_container(g, "x", epoch_id="D.09")
102
+ ALT.rename_container(g, gid, "Rilievo 2013 (Maxar)")
103
+ assert g.find_node_by_id(gid).name == "Rilievo 2013 (Maxar)"
104
+ ALT.put_in_container(g, "rm_rb1", gid)
105
+ with pytest.raises(ValueError):
106
+ ALT.remove_container(g, gid)
107
+ assert ALT.empty_container(g, gid)["left"] == ["rm_rb1"]
108
+ assert ALT.containers_of(g, "rm_rb1") == ["grp"]
109
+ ALT.remove_container(g, gid)
110
+ assert g.find_node_by_id(gid) is None
111
+ assert not any(gid in (e.edge_source, e.edge_target) for e in g.edges)
112
+ # a container with an alternative of its own is not removed even empty
113
+ ALT.empty_container(g, "grp")
114
+ with pytest.raises(ValueError):
115
+ ALT.remove_container(g, "grp")
116
+
117
+
118
+ def test_version_files_wherever_the_version_is(tmp_path):
119
+ # MICRO-ASSETS-LIVELLI p.1 · a version the graph cites in the project's RM
120
+ # folder (not in versions/): the glb with its stamp and hints; a glTF in a
121
+ # folder named as a version: the whole folder, its images apart
122
+ from s3dgraphy.resources import use_profiles as UP
123
+ glb = tmp_path / "ME_EST_L_LOD1@lod2-mobile_ar.glb"
124
+ glb.write_bytes(b"glTF")
125
+ (tmp_path / "ME_EST_L_LOD1@lod2-mobile_ar.glb.stamp.json").write_text("{}")
126
+ (tmp_path / "ME_EST_L_LOD1@lod2-mobile_ar.glb.hints.json").write_text("{}")
127
+ (tmp_path / "other@lod2-mobile_ar.glb").write_bytes(b"glTF")
128
+ r = UP.version_files(str(glb))
129
+ assert [p.rsplit("/", 1)[1] for p in r["files"]] == [
130
+ "ME_EST_L_LOD1@lod2-mobile_ar.glb", "ME_EST_L_LOD1@lod2-mobile_ar.glb.hints.json",
131
+ "ME_EST_L_LOD1@lod2-mobile_ar.glb.stamp.json"]
132
+ assert r["images"] == [] and r["bytes"] == 8
133
+ d = tmp_path / "ME_EST_L_LOD1@lod0-aton-heriverse-fcdcf422"
134
+ d.mkdir()
135
+ (d / "ME_EST_L_LOD1.gltf").write_text('{"asset": {"version": "2.0"}}')
136
+ (d / "ME_EST_L_LOD1.bin").write_bytes(b"\0" * 4)
137
+ (d / "T_OB_EST_L_LOD1.jpg").write_bytes(b"\xff\xd8")
138
+ r = UP.version_files(str(d / "ME_EST_L_LOD1.gltf"))
139
+ assert r["path"] == str(d) and len(r["files"]) == 3
140
+ assert [p.rsplit("/", 1)[1] for p in r["images"]] == ["T_OB_EST_L_LOD1.jpg"]