s3dgraphy 1.6.0.dev82__tar.gz → 1.6.0.dev84__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 (625) hide show
  1. {s3dgraphy-1.6.0.dev82/src/s3dgraphy.egg-info → s3dgraphy-1.6.0.dev84}/PKG-INFO +1 -1
  2. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/pyproject.toml +1 -1
  3. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/em_state_symbols.json +12 -0
  4. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/__init__.py +1 -1
  5. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/api.py +6 -3
  6. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/asset_list.py +29 -3
  7. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/consolidate.py +1 -1
  8. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/locate.py +40 -8
  9. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/use_profiles.py +14 -5
  10. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84/src/s3dgraphy.egg-info}/PKG-INFO +1 -1
  11. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy.egg-info/SOURCES.txt +1 -0
  12. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_asset_list.py +12 -0
  13. s3dgraphy-1.6.0.dev84/tests/test_cloud_placeholders.py +86 -0
  14. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/LICENSE +0 -0
  15. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/MANIFEST.in +0 -0
  16. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/README.md +0 -0
  17. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/setup.cfg +0 -0
  18. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/acquisition_descriptor.schema.json +0 -0
  19. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/acquisition_mappings/ercolano.json +0 -0
  20. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/acquisition_mappings/fs.json +0 -0
  21. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/acquisition_mappings/uri.json +0 -0
  22. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/alternative_cases.json +0 -0
  23. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/datamodel_translations.json +0 -0
  24. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/em.ttl +0 -0
  25. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/em_document_types.json +0 -0
  26. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/em_extractor_types.json +0 -0
  27. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/em_palette_icons.json +0 -0
  28. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/em_qualia_types.json +0 -0
  29. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/em_qualia_types_additions.json +0 -0
  30. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/em_visual_rules.json +0 -0
  31. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/hdto_extension.ttl +0 -0
  32. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/new_qualia_template.json +0 -0
  33. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/node_registry.generated.json +0 -0
  34. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/outdated_s3dgraphy.ttl +0 -0
  35. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/outdated_s3dgraphy_nomapping.ttl +0 -0
  36. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json +0 -0
  37. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json.v155.bak +0 -0
  38. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/s3Dgraphy_node_datamodel.json +0 -0
  39. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/ActivityNodeGroup.svg +0 -0
  40. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.png +0 -0
  41. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.svg +0 -0
  42. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/EpochNode.svg +0 -0
  43. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/ParadataNodeGroup.svg +0 -0
  44. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/RSF.png +0 -0
  45. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/RSF.svg +0 -0
  46. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/SE.svg +0 -0
  47. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/SE_old.png +0 -0
  48. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/SE_old.svg +0 -0
  49. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/SF.png +0 -0
  50. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/SF.svg +0 -0
  51. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/TSU.png +0 -0
  52. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/US.png +0 -0
  53. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/US.svg +0 -0
  54. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/USD.png +0 -0
  55. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/USD.svg +0 -0
  56. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/USVn.png +0 -0
  57. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/USVn.svg +0 -0
  58. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/USVs.png +0 -0
  59. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/USVs.svg +0 -0
  60. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/UTR.svg +0 -0
  61. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/VSF.png +0 -0
  62. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/VSF.svg +0 -0
  63. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/author.png +0 -0
  64. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/author.svg +0 -0
  65. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/author_ai.png +0 -0
  66. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/author_ai.svg +0 -0
  67. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/bozze/site.svg +0 -0
  68. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/combiner.png +0 -0
  69. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/combiner.svg +0 -0
  70. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/container.svg +0 -0
  71. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/continuity.png +0 -0
  72. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/continuity.svg +0 -0
  73. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/document.png +0 -0
  74. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/document.svg +0 -0
  75. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/00_transformation.svg +0 -0
  76. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/01_topographicnetwork.svg +0 -0
  77. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/02_pointcloud.svg +0 -0
  78. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/03_mesh.svg +0 -0
  79. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/04_points.svg +0 -0
  80. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/05_lines.svg +0 -0
  81. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/06_polygons.svg +0 -0
  82. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/07_DEM.svg +0 -0
  83. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/08_ortophoto.svg +0 -0
  84. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/09_photos.svg +0 -0
  85. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/10_laserscanner.svg +0 -0
  86. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device.svg +0 -0
  87. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_computer.svg +0 -0
  88. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_drone.svg +0 -0
  89. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_gnss.svg +0 -0
  90. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_optical.svg +0 -0
  91. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_scanner.svg +0 -0
  92. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_sensor.svg +0 -0
  93. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_station.svg +0 -0
  94. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/12_gnss_survey.svg +0 -0
  95. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/13_field_drawing.svg +0 -0
  96. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/14_recording_sheet.svg +0 -0
  97. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/15_decimation.svg +0 -0
  98. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/16_georeferencing.svg +0 -0
  99. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/17_format_conversion.svg +0 -0
  100. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/18_classification.svg +0 -0
  101. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/dtc/19_vectorization.svg +0 -0
  102. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/embargo.png +0 -0
  103. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/embargo.svg +0 -0
  104. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/extractor.png +0 -0
  105. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/extractor.svg +0 -0
  106. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/gcp_set.svg +0 -0
  107. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/generic_node.svg +0 -0
  108. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/geo_position.svg +0 -0
  109. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/graph.svg +0 -0
  110. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/hdto/graph.svg +0 -0
  111. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/hdto/hdt.svg +0 -0
  112. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/hdto/heritage_entity.svg +0 -0
  113. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/hdto/project.svg +0 -0
  114. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/hdto/study.svg +0 -0
  115. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/license.png +0 -0
  116. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/license.svg +0 -0
  117. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/link.svg +0 -0
  118. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/narrative.png +0 -0
  119. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/narrative.svg +0 -0
  120. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/play.svg +0 -0
  121. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/property.png +0 -0
  122. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/property.svg +0 -0
  123. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/proxy.svg +0 -0
  124. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/registration_transform.svg +0 -0
  125. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/representation_model.svg +0 -0
  126. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/representation_model_doc.svg +0 -0
  127. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/representation_model_sf.svg +0 -0
  128. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/resource_file.svg +0 -0
  129. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/semantic_shape.svg +0 -0
  130. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/serSU.png +0 -0
  131. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/serSU.svg +0 -0
  132. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/serUSD.png +0 -0
  133. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/serUSV.png +0 -0
  134. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/serUSVn.svg +0 -0
  135. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/serUSVs.svg +0 -0
  136. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/tileset.svg +0 -0
  137. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/version_gltf.svg +0 -0
  138. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/version_mesh.svg +0 -0
  139. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/version_scene.svg +0 -0
  140. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/2D/version_tiles.svg +0 -0
  141. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/RSF.glb +0 -0
  142. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/SF.glb +0 -0
  143. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/TSU.glb +0 -0
  144. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/US.glb +0 -0
  145. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/USD.glb +0 -0
  146. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/USVn.glb +0 -0
  147. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/USVs.glb +0 -0
  148. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/VSF.glb +0 -0
  149. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/combiner.glb +0 -0
  150. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/continuity.glb +0 -0
  151. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/document.glb +0 -0
  152. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/extractor.glb +0 -0
  153. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/property.glb +0 -0
  154. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/serSU.glb +0 -0
  155. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/serUSD.glb +0 -0
  156. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/src/3D/serUSV.glb +0 -0
  157. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/JSON_config/version_for_cases.json +0 -0
  158. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/__main__.py +0 -0
  159. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/acquisition/__init__.py +0 -0
  160. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/acquisition/acquire.py +0 -0
  161. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/acquisition/descriptor.py +0 -0
  162. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/acquisition/mapping.py +0 -0
  163. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/ai_validation.py +0 -0
  164. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/annotation/__init__.py +0 -0
  165. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/annotation/migrate_reading.py +0 -0
  166. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/annotation/paradata.py +0 -0
  167. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/annotation/reading.py +0 -0
  168. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/authorities/__init__.py +0 -0
  169. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/authorities/resolver.py +0 -0
  170. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/authorities/snapshots/LICENSE +0 -0
  171. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/authorities/snapshots/chronontology.jsonld +0 -0
  172. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/authorities/snapshots/getty_aat.jsonld +0 -0
  173. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/authorities/snapshots/getty_tgn.jsonld +0 -0
  174. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/authorities/snapshots/periodo.jsonld +0 -0
  175. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/authorities/snapshots/provenance.json +0 -0
  176. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/classification.py +0 -0
  177. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/container.py +0 -0
  178. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/contract/__init__.py +0 -0
  179. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/contract/connector.py +0 -0
  180. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/contract/consumer.py +0 -0
  181. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/contract/core.py +0 -0
  182. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/contract/reference.py +0 -0
  183. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/crdt.py +0 -0
  184. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/data/StratiMiner_Extraction_Prompt.md +0 -0
  185. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/datamodel.py +0 -0
  186. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/diagnostics.py +0 -0
  187. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/dissemination.py +0 -0
  188. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/dtc/__init__.py +0 -0
  189. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/dtc/capture.py +0 -0
  190. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/dtc/corpus.py +0 -0
  191. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/dtc/devices.py +0 -0
  192. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/dtc/ingest.py +0 -0
  193. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/dtc/neighbourhood.py +0 -0
  194. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/dtc/residency.py +0 -0
  195. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/edges/__init__.py +0 -0
  196. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/edges/connection_resolver.py +0 -0
  197. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/edges/connections_loader.py +0 -0
  198. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/edges/edge.py +0 -0
  199. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/editorial.py +0 -0
  200. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/__init__.py +0 -0
  201. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/docx_exporter.py +0 -0
  202. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/emjson_exporter.py +0 -0
  203. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/__init__.py +0 -0
  204. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/canvas_generator.py +0 -0
  205. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/edge_generator.py +0 -0
  206. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/epoch_generator.py +0 -0
  207. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/graphml_exporter.py +0 -0
  208. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/graphml_patcher.py +0 -0
  209. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/group_node_generator.py +0 -0
  210. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/node_generator.py +0 -0
  211. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/node_registry.py +0 -0
  212. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/palette_resources.py +0 -0
  213. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/paradata_generator.py +0 -0
  214. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/paradata_image_generator.py +0 -0
  215. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/paradata_node_generators.py +0 -0
  216. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/table_node_generator.py +0 -0
  217. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/graphml/utils.py +0 -0
  218. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/html_exporter.py +0 -0
  219. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/ipynb_exporter.py +0 -0
  220. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/json_exporter.py +0 -0
  221. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/latex_exporter.py +0 -0
  222. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/rdf_exporter.py +0 -0
  223. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/exporter/unified_xlsx_exporter.py +0 -0
  224. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/__init__.py +0 -0
  225. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/aton.py +0 -0
  226. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/frame.py +0 -0
  227. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/gltf.py +0 -0
  228. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/migrate.py +0 -0
  229. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/proxy.py +0 -0
  230. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/reading_glb.py +0 -0
  231. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/registration.py +0 -0
  232. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/store_backed.py +0 -0
  233. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/transform.py +0 -0
  234. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/geometry/wkt.py +0 -0
  235. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/gis/__init__.py +0 -0
  236. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/gis/crs.py +0 -0
  237. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/gis/layer.py +0 -0
  238. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/gis/shapefile.py +0 -0
  239. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/gis/site.py +0 -0
  240. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/graph.py +0 -0
  241. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/graph_removal.py +0 -0
  242. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/hdto.py +0 -0
  243. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/iiif.py +0 -0
  244. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/__init__.py +0 -0
  245. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/base_importer.py +0 -0
  246. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/csv_importer.py +0 -0
  247. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/emjson_importer.py +0 -0
  248. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/fmpxml_importer.py +0 -0
  249. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/import_graphml.py +0 -0
  250. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/mapped_xlsx_importer.py +0 -0
  251. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/metashape_project.py +0 -0
  252. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/pyarchinit_importer.py +0 -0
  253. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/qualia_importer.py +0 -0
  254. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/rdf_importer.py +0 -0
  255. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/sheet_header.py +0 -0
  256. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/source_text.py +0 -0
  257. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/unified_xlsx_importer.py +0 -0
  258. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/xlsx_importer.py +0 -0
  259. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/importer/xml_importer.py +0 -0
  260. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/indices.py +0 -0
  261. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/labels.py +0 -0
  262. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/language.py +0 -0
  263. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/links.py +0 -0
  264. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/__init__.py +0 -0
  265. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/authoring.py +0 -0
  266. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/emdb/generic_specialfind_mapping.json +0 -0
  267. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/emdb/site_properties_mapping.json +0 -0
  268. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/emdb/usm_mapping.json +0 -0
  269. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/generic/excel_to_graphml_mapping.json +0 -0
  270. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/pyarchinit/pyarchinit_us_mapping.json +0 -0
  271. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/registry.py +0 -0
  272. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/source_list/em_sourcelist_it.json +0 -0
  273. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/source_list/source_list_mapping.json +0 -0
  274. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/template_emdb_mapping.json +0 -0
  275. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/mappings/template_pyarchinit_mapping.json +0 -0
  276. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/merge/__init__.py +0 -0
  277. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/merge/graph_merger.py +0 -0
  278. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/multigraph/__init__.py +0 -0
  279. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/multigraph/multigraph.py +0 -0
  280. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/narrative/__init__.py +0 -0
  281. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/narrative/bake.py +0 -0
  282. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/narrative/generation.py +0 -0
  283. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/narrative/query.py +0 -0
  284. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/narrative/registry.py +0 -0
  285. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/narrative/site_story.py +0 -0
  286. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/__init__.py +0 -0
  287. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/annotation_region_node.py +0 -0
  288. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/author_node.py +0 -0
  289. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/base_node.py +0 -0
  290. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/combiner_node.py +0 -0
  291. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/document_node.py +0 -0
  292. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/dtc_acquisition_node.py +0 -0
  293. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/dtc_device_node.py +0 -0
  294. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/dtc_node.py +0 -0
  295. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/dtc_process_node.py +0 -0
  296. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/embargo_node.py +0 -0
  297. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/epoch_node.py +0 -0
  298. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/extractor_node.py +0 -0
  299. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/geo_position_node.py +0 -0
  300. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/georeferencing_node.py +0 -0
  301. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/graph_node.py +0 -0
  302. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/group_node.py +0 -0
  303. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/hdt_node.py +0 -0
  304. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/heritage_entity_node.py +0 -0
  305. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/license_node.py +0 -0
  306. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/narrative_node.py +0 -0
  307. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/paradata_node.py +0 -0
  308. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/periodization_node.py +0 -0
  309. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/project_node.py +0 -0
  310. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/property_node.py +0 -0
  311. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/representation_node.py +0 -0
  312. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/resource_file_node.py +0 -0
  313. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/resource_node.py +0 -0
  314. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/semantic_shape_node.py +0 -0
  315. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/stratigraphic_node.py +0 -0
  316. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/study_node.py +0 -0
  317. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/nodes/translation_node.py +0 -0
  318. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/ownership.py +0 -0
  319. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/paradata_view.py +0 -0
  320. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/periodization.py +0 -0
  321. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/photogrammetry/__init__.py +0 -0
  322. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/photogrammetry/delta.py +0 -0
  323. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/project_tree.py +0 -0
  324. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/property_source.py +0 -0
  325. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/publication.py +0 -0
  326. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/rapporti.py +0 -0
  327. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resolvers/__init__.py +0 -0
  328. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resolvers/builtin_rules.py +0 -0
  329. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resolvers/property_resolver.py +0 -0
  330. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/__init__.py +0 -0
  331. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/addresses.py +0 -0
  332. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/alignment.py +0 -0
  333. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/alternatives.py +0 -0
  334. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/blend_folder.py +0 -0
  335. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/blend_room.py +0 -0
  336. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/detail.py +0 -0
  337. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/files.py +0 -0
  338. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/fs_backend.py +0 -0
  339. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/graph_compose.py +0 -0
  340. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/moved.py +0 -0
  341. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/object_store.py +0 -0
  342. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/resolver.py +0 -0
  343. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/s3_backend.py +0 -0
  344. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/storage_rows.py +0 -0
  345. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/tiles3tz.py +0 -0
  346. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/resources/versions.py +0 -0
  347. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/rights.py +0 -0
  348. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/room_import/__init__.py +0 -0
  349. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/room_import/access.py +0 -0
  350. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/room_import/engine.py +0 -0
  351. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/room_import/errors.py +0 -0
  352. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/room_import/inventory.py +0 -0
  353. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/room_import/node.py +0 -0
  354. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/room_import/pack.py +0 -0
  355. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/room_import/trust.py +0 -0
  356. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/shelf/__init__.py +0 -0
  357. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/shelf/core.py +0 -0
  358. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/spatiotemporal.py +0 -0
  359. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/stamp/__init__.py +0 -0
  360. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/stamp/absorb.py +0 -0
  361. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/stamp/emit.py +0 -0
  362. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/stamp/hints.py +0 -0
  363. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/stamp/identity.py +0 -0
  364. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/study.py +0 -0
  365. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/__init__.py +0 -0
  366. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/_db_handle.py +0 -0
  367. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/_legacy_paradata_svgs.py +0 -0
  368. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/_workspace.py +0 -0
  369. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/conflict_resolver.py +0 -0
  370. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/edge_registry.py +0 -0
  371. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/graph_ingestor.py +0 -0
  372. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/graph_projector.py +0 -0
  373. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/graphml_writer.py +0 -0
  374. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/group_projector.py +0 -0
  375. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/group_store.py +0 -0
  376. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/ingest_result.py +0 -0
  377. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/paradata_store.py +0 -0
  378. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/pyarchinit_pg_importer.py +0 -0
  379. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/rapporti.py +0 -0
  380. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/uuid7.py +0 -0
  381. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/vocab_provider_core.py +0 -0
  382. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/vocab_types.py +0 -0
  383. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/yed_classifier.py +0 -0
  384. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/yed_detector.py +0 -0
  385. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/yed_group_walker.py +0 -0
  386. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/yed_import_pipeline.py +0 -0
  387. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/yed_rapporti_policy.py +0 -0
  388. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/sync/yed_table_parser.py +0 -0
  389. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/templates/em_data_template.xlsx +0 -0
  390. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/templates/em_palette_template.graphml +0 -0
  391. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/temporal/__init__.py +0 -0
  392. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/temporal/inference_engine.py +0 -0
  393. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/temporal/relative_chronology.py +0 -0
  394. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/__init__.py +0 -0
  395. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/consumer_drift.py +0 -0
  396. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/datamodel_i18n.py +0 -0
  397. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/deliverable_report.py +0 -0
  398. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/glyph_sheet.py +0 -0
  399. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/glyphs_from_svg.py +0 -0
  400. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/node_finder.py +0 -0
  401. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/ontology_html.py +0 -0
  402. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/sync_node_datamodel.py +0 -0
  403. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/tools/wheel_drift.py +0 -0
  404. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/transforms/__init__.py +0 -0
  405. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/transforms/aux_tracking.py +0 -0
  406. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/transforms/compact.py +0 -0
  407. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/transforms/materialize_continuity.py +0 -0
  408. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/translation.py +0 -0
  409. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/utils/__init__.py +0 -0
  410. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/utils/utils.py +0 -0
  411. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/utils/visual_layout.py +0 -0
  412. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy/zero_hour.py +0 -0
  413. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy.egg-info/dependency_links.txt +0 -0
  414. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy.egg-info/requires.txt +0 -0
  415. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/src/s3dgraphy.egg-info/top_level.txt +0 -0
  416. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_acquisition.py +0 -0
  417. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_acquisition_fs.py +0 -0
  418. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_add_resource.py +0 -0
  419. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_ai_validation_nodes.py +0 -0
  420. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_alternative_labels.py +0 -0
  421. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_alternative_sets.py +0 -0
  422. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_alternatives_hat.py +0 -0
  423. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_anastylosis_document_type.py +0 -0
  424. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_api_surface.py +0 -0
  425. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_asset_dtc_protocol.py +0 -0
  426. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_asset_versions.py +0 -0
  427. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_aton_shapes.py +0 -0
  428. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_attach_only.py +0 -0
  429. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_authority_projection.py +0 -0
  430. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_authority_resolver.py +0 -0
  431. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_blend_folder.py +0 -0
  432. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_blend_locator.py +0 -0
  433. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_blend_room.py +0 -0
  434. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_bucket_alignment.py +0 -0
  435. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_canonical_document_rename.py +0 -0
  436. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_canvas_metadata_import.py +0 -0
  437. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_capture_acquisition.py +0 -0
  438. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_capture_rdf_class.py +0 -0
  439. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_chronology_on_request.py +0 -0
  440. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_coating_unit.py +0 -0
  441. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_composite_node_name.py +0 -0
  442. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_connection_resolver.py +0 -0
  443. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_consolida_2.py +0 -0
  444. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_consolidate_compose.py +0 -0
  445. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_consumer_drift.py +0 -0
  446. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_container.py +0 -0
  447. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_container_layouts.py +0 -0
  448. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_containment_tpq.py +0 -0
  449. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_contemporaneity.py +0 -0
  450. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_contract.py +0 -0
  451. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_contract_consumer.py +0 -0
  452. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_convert_command.py +0 -0
  453. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_crdt.py +0 -0
  454. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_cycle_message_is_cheap.py +0 -0
  455. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_datamodel_fingerprint.py +0 -0
  456. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_datamodel_i18n.py +0 -0
  457. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_detail.py +0 -0
  458. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_deterministic_ids.py +0 -0
  459. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dev29_em_sourcelist.py +0 -0
  460. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dev29_file_set_stamp.py +0 -0
  461. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dev29_graphml_without_a_database.py +0 -0
  462. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dev29_image_set_texturing.py +0 -0
  463. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dev29_not_georeferenced.py +0 -0
  464. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dev29_one_act_n_outputs.py +0 -0
  465. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dev29_ttl_round_trip.py +0 -0
  466. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dev30_decisions.py +0 -0
  467. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_devices.py +0 -0
  468. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dissemination_tombstones.py +0 -0
  469. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dove_sta_il_testo.py +0 -0
  470. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dtc_corpus.py +0 -0
  471. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dtc_ingest.py +0 -0
  472. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dtc_neighbourhood.py +0 -0
  473. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dtc_projection.py +0 -0
  474. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_dtc_residency.py +0 -0
  475. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_edge_outside_graph.py +0 -0
  476. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_edge_ui_phrases.py +0 -0
  477. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_editorial.py +0 -0
  478. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_em_ttl_matches_the_datamodels.py +0 -0
  479. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_emjson_conformance.py +0 -0
  480. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_emjson_no_drawing_keys.py +0 -0
  481. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_emjson_roundtrip.py +0 -0
  482. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_emjson_schema_version.py +0 -0
  483. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_end_of_unit.py +0 -0
  484. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_epoch_instances.py +0 -0
  485. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_epoch_properties_and_sub_epochs.py +0 -0
  486. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_epoch_undated_import.py +0 -0
  487. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_explicit_node_type_marker.py +0 -0
  488. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_extracted_from_unit.py +0 -0
  489. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_file_frame.py +0 -0
  490. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_filtered_import.py +0 -0
  491. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_fmpxml_importer.py +0 -0
  492. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_fs_backend.py +0 -0
  493. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_functional_units.py +0 -0
  494. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_georeference_scene.py +0 -0
  495. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_gis_site.py +0 -0
  496. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_gltf_stitch.py +0 -0
  497. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_glyph_paths.py +0 -0
  498. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_graph_header_code.py +0 -0
  499. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_graph_helpers_indexed.py +0 -0
  500. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_graph_indices_alive.py +0 -0
  501. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_graph_indices_edges.py +0 -0
  502. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_graph_removal.py +0 -0
  503. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_graph_scope_migration.py +0 -0
  504. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_hdto_glyphs.py +0 -0
  505. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_hdto_projection.py +0 -0
  506. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_hdto_study.py +0 -0
  507. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_header_key_aliases.py +0 -0
  508. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_i_generi_dei_passi.py +0 -0
  509. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_iiif.py +0 -0
  510. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_il_modo_d_accesso.py +0 -0
  511. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_il_modo_dal_relay.py +0 -0
  512. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_il_proprietario_si_legge.py +0 -0
  513. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_il_riallineamento.py +0 -0
  514. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_import_without_residues.py +0 -0
  515. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_importer_edge_hygiene.py +0 -0
  516. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_ipynb_exporter.py +0 -0
  517. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_iri_extendedmatrix.py +0 -0
  518. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_issue27_small_points.py +0 -0
  519. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_la_lingua_alla_nascita.py +0 -0
  520. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_la_lingua_dei_dati.py +0 -0
  521. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_la_lingua_nell_op.py +0 -0
  522. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_la_riga_d_intestazione.py +0 -0
  523. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_lab_orizzonti.py +0 -0
  524. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_latex_exporter.py +0 -0
  525. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_le_traduzioni.py +0 -0
  526. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_lod_levels.py +0 -0
  527. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_lossless_roundtrip.py +0 -0
  528. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_mapping_authoring.py +0 -0
  529. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_mapping_csv_and_relations.py +0 -0
  530. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_masonry_unit.py +0 -0
  531. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_material_color.py +0 -0
  532. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_merge_conflicts.py +0 -0
  533. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_metashape_project.py +0 -0
  534. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_migrate_legacy_proxy.py +0 -0
  535. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_authorship.py +0 -0
  536. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_bake_docx.py +0 -0
  537. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_figures.py +0 -0
  538. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_generation.py +0 -0
  539. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_mentions.py +0 -0
  540. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_node.py +0 -0
  541. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_query.py +0 -0
  542. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_scaffolder.py +0 -0
  543. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_site_place.py +0 -0
  544. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_narrative_unvalidated_export.py +0 -0
  545. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_node_datamodel_registry.py +0 -0
  546. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_node_finder.py +0 -0
  547. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_node_type_map_integrity.py +0 -0
  548. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_one_resolver.py +0 -0
  549. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_one_spelling_writers.py +0 -0
  550. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_ontology_html.py +0 -0
  551. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_op_vocabulary.py +0 -0
  552. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_part_twins.py +0 -0
  553. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_pg_importer.py +0 -0
  554. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_photogrammetry_delta.py +0 -0
  555. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_physical_relation_spellings.py +0 -0
  556. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_piu_indirizzi.py +0 -0
  557. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_promote_keeps_proxy_type.py +0 -0
  558. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_promotion.py +0 -0
  559. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_property_as_source.py +0 -0
  560. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_property_owners.py +0 -0
  561. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_proxy_resource.py +0 -0
  562. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_proxy_retype.py +0 -0
  563. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_psx_locator.py +0 -0
  564. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_pyarchinit_tier2.py +0 -0
  565. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_qualia_dai_d7_d8.py +0 -0
  566. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_rdf_embedding.py +0 -0
  567. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_rdf_reverse_edges.py +0 -0
  568. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_rdf_roundtrip.py +0 -0
  569. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_rdf_sub_epoch_direction.py +0 -0
  570. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_reading_coords.py +0 -0
  571. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_reading_glb.py +0 -0
  572. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_reading_migration.py +0 -0
  573. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_reading_place.py +0 -0
  574. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_reading_rdf.py +0 -0
  575. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_recompute_warnings.py +0 -0
  576. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_registration.py +0 -0
  577. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_release.py +0 -0
  578. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_reproject.py +0 -0
  579. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_resource_file_node.py +0 -0
  580. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_resource_files_implicit.py +0 -0
  581. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_resource_layer.py +0 -0
  582. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_resource_representations.py +0 -0
  583. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_resource_revision.py +0 -0
  584. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_resource_tier.py +0 -0
  585. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_reverse_edges.py +0 -0
  586. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_rm_container_node_group.py +0 -0
  587. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_room_import.py +0 -0
  588. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_room_import_access.py +0 -0
  589. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_room_import_inventory.py +0 -0
  590. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_room_import_trust.py +0 -0
  591. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_s3_backend.py +0 -0
  592. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_semantic_purity.py +0 -0
  593. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_series_vsf.py +0 -0
  594. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_shelf.py +0 -0
  595. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_shelf_facets.py +0 -0
  596. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_shelf_hatting.py +0 -0
  597. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_shelf_role_uri_table.py +0 -0
  598. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_shipped_mappings.py +0 -0
  599. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_source_list_mapping.py +0 -0
  600. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_source_text.py +0 -0
  601. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_spatiotemporal_entities.py +0 -0
  602. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_special_find_definitions.py +0 -0
  603. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_stable_study_code.py +0 -0
  604. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_stamp.py +0 -0
  605. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_stamp_hints.py +0 -0
  606. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_stamp_title_description.py +0 -0
  607. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_storage_rows.py +0 -0
  608. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_store_backed_geometry.py +0 -0
  609. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_stratiminer_api.py +0 -0
  610. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_study_metadata.py +0 -0
  611. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_threed_instances.py +0 -0
  612. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_tileset_resource.py +0 -0
  613. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_transform_form.py +0 -0
  614. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_ttl_roundtrip.py +0 -0
  615. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_unit_definition.py +0 -0
  616. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_use_profiles.py +0 -0
  617. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_valore_proprieta_doppio.py +0 -0
  618. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_verifica_provenance.py +0 -0
  619. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_version_for.py +0 -0
  620. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_visual_assets.py +0 -0
  621. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_wheel_drift.py +0 -0
  622. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_xlsx_containment_and_unknown_bounds.py +0 -0
  623. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_xlsx_importer_graph_init.py +0 -0
  624. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/tests/test_xlsx_source_column.py +0 -0
  625. {s3dgraphy-1.6.0.dev82 → s3dgraphy-1.6.0.dev84}/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.dev82
3
+ Version: 1.6.0.dev84
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.dev82"
7
+ version = "1.6.0.dev84"
8
8
  description = "3D Stratigraphic Graph Management Library for archaeological and heritage applications"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -82,6 +82,18 @@
82
82
  "en": "A file is here but its bytes are zeros: an incomplete copy, to be made again."
83
83
  }
84
84
  },
85
+ "file.in_cloud": {
86
+ "family": "file",
87
+ "glyph": "⤓",
88
+ "label": {
89
+ "it": "nel cloud",
90
+ "en": "in the cloud"
91
+ },
92
+ "meaning": {
93
+ "it": "Il file è qui come segnaposto: i suoi byte sono nel cloud (OneDrive, iCloud, Dropbox «solo online»). Non si legge finché non lo scarichi.",
94
+ "en": "The file is here as a placeholder: its bytes are in the cloud (OneDrive, iCloud, Dropbox «online only»). It is not read until you download it."
95
+ }
96
+ },
85
97
  "node.reachable": {
86
98
  "family": "node",
87
99
  "glyph": "⬢",
@@ -1,4 +1,4 @@
1
- __version__ = "1.6.0.dev82"
1
+ __version__ = "1.6.0.dev84"
2
2
  __datamodel_version__ = "1.5.5" # s3Dgraphy connections datamodel version
3
3
 
4
4
  # s3Dgraphy/__init__.py
@@ -3246,9 +3246,11 @@ def resolve_files(graph: Graph, *, project_root: Optional[str] = None,
3246
3246
  base_dirs: Sequence[str] = (), cache_dirs: Sequence[str] = (),
3247
3247
  on_node: Optional[Callable[[str], bool]] = None,
3248
3248
  hasher: Optional[Callable[[str], str]] = None,
3249
- verify: bool = False) -> List[Dict[str, Any]]:
3249
+ verify: bool = False,
3250
+ cloud: Optional[Callable[[str], bool]] = None) -> List[Dict[str, Any]]:
3250
3251
  """The STATE of every resource of ``graph`` — ``on_disk``, ``on_node``,
3251
- ``both``, ``reference_only``, ``missing``, ``empty_copy`` — trying cache →
3252
+ ``both``, ``reference_only``, ``missing``, ``empty_copy``, ``in_cloud``
3253
+ (``cloud(path)``: bytes only in a cloud, never read) — trying cache →
3252
3254
  known paths (the EM standard tree of ``project_root`` first) → node
3253
3255
  (``on_node(hex)``) → reference. The one resolver every tool calls.
3254
3256
  ``verify`` (with a ``hasher``): a file here whose bytes are not the
@@ -3256,7 +3258,8 @@ def resolve_files(graph: Graph, *, project_root: Optional[str] = None,
3256
3258
  :mod:`s3dgraphy.resources.locate`."""
3257
3259
  from .resources.locate import resolve_graph
3258
3260
  return resolve_graph(graph, project_root=project_root, base_dirs=base_dirs,
3259
- cache_dirs=cache_dirs, on_node=on_node, hasher=hasher, verify=verify)
3261
+ cache_dirs=cache_dirs, on_node=on_node, hasher=hasher, verify=verify,
3262
+ cloud=cloud)
3260
3263
 
3261
3264
 
3262
3265
  def resolve_file(entry: Dict[str, Any], **kwargs) -> Dict[str, Any]:
@@ -124,12 +124,23 @@ def _texture_rows(raw: Optional[Dict[str, Any]]) -> List[Dict[str, Any]]:
124
124
  return out
125
125
 
126
126
 
127
+ def geometry_keys(raw: Optional[Dict[str, Any]]) -> List[str]:
128
+ """The ``geometry_key`` of each mesh of a measured file
129
+ (:func:`~.use_profiles.measure_gltf`), sorted, each once: two files with
130
+ the same keys hold the same geometry (the same topology and UVs), placed
131
+ anywhere. Empty when the file was not measured."""
132
+ if not raw or not isinstance(raw, dict):
133
+ return []
134
+ return sorted({str(o.get("geometry_key")) for o in raw.get("objects") or []
135
+ if isinstance(o, dict) and o.get("geometry_key") and int(o.get("triangles") or 0) > 0})
136
+
137
+
127
138
  def _state_of(graph, entry: Dict[str, Any], states: Dict[str, str]) -> str:
128
139
  ids = [entry.get("id")] + [f["id"] for f in C._files(graph, entry) if f.get("id") != entry.get("id")]
129
140
  known = [states[i] for i in ids if i in states]
130
141
  if not known:
131
142
  return ""
132
- for worst in ("missing", "empty_copy", "reference_only"):
143
+ for worst in ("missing", "empty_copy", "reference_only", "in_cloud"):
133
144
  if worst in known:
134
145
  return worst
135
146
  return known[0]
@@ -147,6 +158,7 @@ def _version(graph, entry: Dict[str, Any], summary: Dict[str, Any], *, states, m
147
158
  made = made_by(graph, entry["id"])
148
159
  ids = [entry["id"]] + [f["id"] for f in C._files(graph, entry) if f.get("id") != entry["id"]]
149
160
  now = next((changed[i] for i in ids if changed and i in changed), "")
161
+ state = _state_of(graph, entry, states)
150
162
  return {"id": entry["id"], "name": summary.get("name") or entry.get("name") or "",
151
163
  "asset_id": entry.get("asset_id"), "master": bool(entry.get("master")),
152
164
  "level": summary.get("level") or "", "lod_level": summary.get("lod_level") or "",
@@ -158,9 +170,17 @@ def _version(graph, entry: Dict[str, Any], summary: Dict[str, Any], *, states, m
158
170
  "texture_side": summary.get("texture_side"), "ktx2": summary.get("ktx2"),
159
171
  "tileset": bool(summary.get("tileset")),
160
172
  "textures": _texture_rows(raw),
173
+ # MICRO-ARCHIVE-ASSET-2 · the shape of the file: its meshes' geometry
174
+ # keys (indices and UVs, wherever placed — Draco/meshopt bytes when
175
+ # compressed) and its compression, for the forms repeated
176
+ "geometry_keys": geometry_keys(raw),
177
+ "compression": (raw.get("compression") or "") if isinstance(raw, dict) else "",
161
178
  "texture_count": len(raw.get("textures") or {}) if isinstance(raw, dict) else
162
179
  _data(_node(graph, entry["id"])).get("texture_count"),
163
- "state": _state_of(graph, entry, states),
180
+ "state": state,
181
+ # MICRO-TESTATA-CLOUD · its bytes only in a cloud (not downloaded):
182
+ # never measured here, its numbers are the graph's estimate
183
+ "in_cloud": state == "in_cloud",
164
184
  "made": made, "made_say": made_by_say(made),
165
185
  "modified_after_stamp": bool(now) and not entry.get("master"), "sha256_now": now or "",
166
186
  "loaded_by": []}
@@ -288,6 +308,8 @@ def _targets(graph, row: Dict[str, Any], cand: Dict[str, Any], versions: List[Di
288
308
  st_a, why_a = "todo", "master senza sha256: timbralo"
289
309
  elif m["state"] in ("missing", "empty_copy", "reference_only"):
290
310
  st_a, why_a = "todo", f"il file del master non c'è ({m['state'].replace('_', ' ')})"
311
+ elif m["state"] == "in_cloud" and "tileset_master" not in codes:
312
+ st_a, why_a = "ok", "master timbrato, il file è nel cloud (non scaricato: non verificato)"
291
313
  elif "tileset_master" in codes:
292
314
  st_a, why_a = "todo", "dichiara il master del tileset (le mesh da cui viene)"
293
315
  elif not m["state"]:
@@ -348,6 +370,7 @@ def asset_list(graph, *, states: Optional[Dict[str, str]] = None, measure=None,
348
370
  br = branch_of(master["url"] if master else (versions[0]["url"] if versions else ""))
349
371
  modified = [v["id"] for v in versions if v["modified_after_stamp"]]
350
372
  missing_files = [v["id"] for v in versions if v["state"] in ("missing", "empty_copy")]
373
+ cloud_files = [v["id"] for v in versions if v["state"] == "in_cloud"]
351
374
  a = {"id": row["id"], "name": row["name"], "kind": row["kind"],
352
375
  "description": str(getattr(node, "description", "") or ""),
353
376
  "containers": conts, "branch": br, "epochs": [x["name"] for x in epochs_of(graph, row["id"])],
@@ -356,7 +379,7 @@ def asset_list(graph, *, states: Optional[Dict[str, str]] = None, measure=None,
356
379
  "loaded_why": row.get("loaded_why") or "", "loaded_say": row.get("loaded_say") or "",
357
380
  "tileset_master": row.get("tileset_master"),
358
381
  "audit": {"versions": len(versions), "stamped": sum(1 for v in versions if v["stamped"]),
359
- "files_missing": missing_files, "unchecked": sum(1 for v in versions if not v["state"]),
382
+ "files_missing": missing_files, "files_in_cloud": cloud_files, "unchecked": sum(1 for v in versions if not v["state"]),
360
383
  "modified_after_stamp": modified,
361
384
  "master_declared": (row.get("tileset_master") or {}).get("declared")}}
362
385
  assets.append(a)
@@ -380,6 +403,7 @@ def asset_list(graph, *, states: Optional[Dict[str, str]] = None, measure=None,
380
403
  "versions": sum(len(a["versions"]) for a in assets),
381
404
  "textures": len(textures), "shared_textures": sum(1 for t in textures if t["count"] > 1),
382
405
  "measured": n_meas, "estimated": n_est,
406
+ "in_cloud": sum(1 for a in assets for v in a["versions"] if v["in_cloud"]),
383
407
  "by_target": {k: {s: sum(1 for a in assets if a["targets"][k]["state"] == s) for s in STATES}
384
408
  for k in TARGETS}}
385
409
  say = (f"{counts['assets']} asset ({counts['rms']} modelli, {counts['containers']} contenitori), "
@@ -387,6 +411,8 @@ def asset_list(graph, *, states: Optional[Dict[str, str]] = None, measure=None,
387
411
  f"({counts['shared_textures']} condivise)")
388
412
  say += (f"; {n_meas} versioni misurate dai file, {n_est} stimate dal grafo" if n_est
389
413
  else f"; {n_meas} versioni misurate dai file")
414
+ if counts["in_cloud"]:
415
+ say += f"; {counts['in_cloud']} nel cloud (non scaricate: stimate dal grafo)"
390
416
  return {"targets": {k: {**{x: v for x, v in TARGETS[k].items() if x != "uses"},
391
417
  "uses": list(TARGETS[k]["uses"]), "bands": bands(k)} for k in TARGETS},
392
418
  "tools": list(TOOLS), "assets": assets, "textures": textures, "totals": totals,
@@ -357,7 +357,7 @@ def presence(graph, entry: Dict[str, Any], *, states: Optional[Dict[str, str]] =
357
357
  known = [states[i] for i in ids if i in states]
358
358
  state = known[0] if known else ""
359
359
  if len(known) > 1:
360
- worst = next((s for s in ("missing", "empty_copy", "reference_only", "on_disk", "on_node")
360
+ worst = next((s for s in ("missing", "empty_copy", "reference_only", "in_cloud", "on_disk", "on_node")
361
361
  if s in known), known[0])
362
362
  state = worst if not all(k == "both" for k in known) else "both"
363
363
  if not state:
@@ -35,7 +35,7 @@ import re
35
35
  import urllib.parse
36
36
  from typing import Any, Callable, Dict, Iterable, List, Optional
37
37
 
38
- STATES = ("on_disk", "on_node", "both", "reference_only", "missing", "empty_copy")
38
+ STATES = ("on_disk", "on_node", "both", "reference_only", "missing", "empty_copy", "in_cloud")
39
39
 
40
40
  #: the order the positions are tried in
41
41
  ORDER = ("cache", "path", "node", "reference")
@@ -136,7 +136,8 @@ def resolve(entry: Dict[str, Any], *, project_root: Optional[str] = None,
136
136
  base_dirs: Iterable[str] = (), cache_dirs: Iterable[str] = (),
137
137
  on_node: Optional[Callable[[str], bool]] = None,
138
138
  hasher: Optional[Callable[[str], str]] = None,
139
- verify: bool = False) -> Dict[str, Any]:
139
+ verify: bool = False,
140
+ cloud: Optional[Callable[[str], bool]] = None) -> Dict[str, Any]:
140
141
  """The state of ONE resource. ``entry`` is ``{id, locator, checksum}`` (what
141
142
  :func:`entries_of` gives for a graph). The project's standard tree is tried
142
143
  before ``base_dirs`` (C1). ``hasher(path) -> hex`` lets a file found on the
@@ -146,7 +147,16 @@ def resolve(entry: Dict[str, Any], *, project_root: Optional[str] = None,
146
147
  the file was modified after its stamp (MICRO-CONSOLIDA-2) — the state
147
148
  stays where the bytes are.
148
149
 
149
- → ``{id, sha256, state, path, positions: [{kind, where, ok}], note}``."""
150
+ ``cloud(path) -> bool`` (MICRO-TESTATA-CLOUD): a file whose bytes are
151
+ only in a cloud (OneDrive, iCloud, Dropbox «online only»: the caller
152
+ asks the system, by metadata). Such a file is NEVER read here — not
153
+ hashed, not probed for zeros — since reading it would download it: it is
154
+ said ``in_cloud`` with its place in ``cloud_path``, and ``path`` stays
155
+ empty, so nothing downstream measures it by accident. Another candidate
156
+ that is here wins over it.
157
+
158
+ → ``{id, sha256, state, path, positions: [{kind, where, ok}], note,
159
+ cloud_path?}``."""
150
160
  from ..project_tree import search_bases
151
161
 
152
162
  rid = str(entry.get("id") or "")
@@ -158,10 +168,20 @@ def resolve(entry: Dict[str, Any], *, project_root: Optional[str] = None,
158
168
  bases = (search_bases(project_root) if project_root else []) + \
159
169
  [b for b in (base_dirs or ()) if b]
160
170
  positions: List[Dict[str, Any]] = []
161
- path, empty = None, None
171
+ path, empty, cloud_at = None, None, None
172
+
173
+ def in_cloud(p: str) -> bool:
174
+ if cloud is None:
175
+ return False
176
+ try:
177
+ return bool(cloud(p))
178
+ except Exception: # noqa: BLE001 — a system that cannot say: not in the cloud
179
+ return False
162
180
 
163
181
  # 1 · cache
164
182
  hit = in_cache(cache_dirs, hexd)
183
+ if hit and in_cloud(hit):
184
+ cloud_at, hit = hit, None
165
185
  positions.append({"kind": "cache", "where": hit or "", "ok": bool(hit)})
166
186
  if hit:
167
187
  path = hit
@@ -188,13 +208,17 @@ def resolve(entry: Dict[str, Any], *, project_root: Optional[str] = None,
188
208
  if not path and cand_look and not cand_look.startswith(("blend://", "psx://")):
189
209
  for cand in local_candidates(cand_look, bases):
190
210
  if os.path.isfile(cand) or os.path.isdir(cand):
211
+ # in the cloud: never opened (a read would download it)
212
+ if os.path.isfile(cand) and in_cloud(cand):
213
+ cloud_at = cloud_at or cand
214
+ continue
191
215
  if os.path.isfile(cand) and is_empty_copy(cand):
192
216
  empty = empty or cand
193
217
  continue
194
218
  path = cand
195
219
  break
196
- positions.append({"kind": "path", "where": path or empty or cand_look,
197
- "ok": bool(path)})
220
+ positions.append({"kind": "path", "where": path or cloud_at or empty or cand_look,
221
+ "ok": bool(path), **({"cloud": True} if cloud_at and not path else {})})
198
222
  elif locator.startswith(("blend://", "psx://")) and not look:
199
223
  positions.append({"kind": "path", "where": locator, "ok": None})
200
224
  changed, now = False, ""
@@ -229,8 +253,14 @@ def resolve(entry: Dict[str, Any], *, project_root: Optional[str] = None,
229
253
  state = "on_disk"
230
254
  elif node_has:
231
255
  state = "on_node"
232
- if empty:
256
+ if cloud_at:
257
+ note = f"the copy here is in the cloud, not downloaded: {cloud_at}"
258
+ elif empty:
233
259
  note = f"the copy here is empty: {empty}"
260
+ elif cloud_at:
261
+ state = "in_cloud"
262
+ note = (f"in the cloud, not downloaded: {os.path.basename(cloud_at)} — "
263
+ f"download it to measure or verify it")
234
264
  elif empty:
235
265
  state = "empty_copy"
236
266
  note = (f"the bytes of {os.path.basename(empty)} are zeros: an incomplete copy "
@@ -243,6 +273,8 @@ def resolve(entry: Dict[str, Any], *, project_root: Optional[str] = None,
243
273
  else "the graph does not say where the file is")
244
274
  out = {"id": rid, "sha256": f"sha256:{hexd}" if hexd else "", "state": state,
245
275
  "path": path or "", "positions": positions, "note": note}
276
+ if cloud_at and not path:
277
+ out["cloud_path"] = cloud_at
246
278
  if changed:
247
279
  out["changed"] = True
248
280
  out["sha256_now"] = f"sha256:{now}"
@@ -322,7 +354,7 @@ def resolve_graph(graph: Any, **kwargs) -> List[Dict[str, Any]]:
322
354
  if not states:
323
355
  continue
324
356
  rank = {s: i for i, s in enumerate(("missing", "empty_copy", "reference_only",
325
- "on_node", "both", "on_disk"))}
357
+ "in_cloud", "on_node", "both", "on_disk"))}
326
358
  worst = min(states, key=lambda s: rank.get(s, 0))
327
359
  if all(s in ("on_disk", "both") for s in states):
328
360
  worst = "both" if all(s == "both" for s in states) else "on_disk"
@@ -52,7 +52,7 @@ import json
52
52
  import os
53
53
  import re
54
54
  import struct
55
- from typing import Any, Dict, Iterable, List, Optional, Sequence
55
+ from typing import Any, Callable, Dict, Iterable, List, Optional, Sequence
56
56
 
57
57
  # ── the table ───────────────────────────────────────────────────────────────
58
58
 
@@ -1281,15 +1281,17 @@ def _stamp_of(path: str) -> Optional[str]:
1281
1281
  return sidecars(path)["stamp"]
1282
1282
 
1283
1283
 
1284
- def list_versions(folder: str, model: Optional[str] = None, *, measure: bool = True
1285
- ) -> List[Dict[str, Any]]:
1284
+ def list_versions(folder: str, model: Optional[str] = None, *, measure: bool = True,
1285
+ cloud: Optional[Callable[[str], bool]] = None) -> List[Dict[str, Any]]:
1286
1286
  """The versions in ``folder`` (``RB|SB/versions``), of ``model`` only when
1287
1287
  given: a ``.glb``/``.gltf`` named ``<model>@<level>-<destination>``, or a
1288
1288
  folder so named holding a ``.gltf`` (a glTF separate). Each →
1289
1289
  ``{name, model, level, destination, profile, entry, files, bytes,
1290
1290
  modified, stamp, triangles, textures}`` (the numbers read from the bytes
1291
1291
  when ``measure``); ``files`` are every file that goes with it (its .bin,
1292
- textures, its stamp) — what a removal deletes."""
1292
+ textures, its stamp) — what a removal deletes. ``cloud(path) -> bool``
1293
+ (MICRO-TESTATA-CLOUD): a file whose bytes are only in a cloud is not
1294
+ measured (reading it would download it) — ``in_cloud`` on its row."""
1293
1295
  out = []
1294
1296
  try:
1295
1297
  names = sorted(os.listdir(folder))
@@ -1315,7 +1317,14 @@ def list_versions(folder: str, model: Optional[str] = None, *, measure: bool = T
1315
1317
  modified=os.path.getmtime(entry))
1316
1318
  files: List[str] = []
1317
1319
  tris = textures = None
1318
- if measure and entry.endswith(".stl"):
1320
+ try:
1321
+ remote = bool(cloud(entry)) if cloud is not None else False
1322
+ except Exception: # noqa: BLE001 — a system that cannot say: not in the cloud
1323
+ remote = False
1324
+ if remote:
1325
+ row["in_cloud"] = True
1326
+ files = [entry]
1327
+ elif measure and entry.endswith(".stl"):
1319
1328
  files = [entry]
1320
1329
  tris = stl_triangles(entry)
1321
1330
  textures = 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: s3dgraphy
3
- Version: 1.6.0.dev82
3
+ Version: 1.6.0.dev84
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>
@@ -434,6 +434,7 @@ tests/test_canvas_metadata_import.py
434
434
  tests/test_capture_acquisition.py
435
435
  tests/test_capture_rdf_class.py
436
436
  tests/test_chronology_on_request.py
437
+ tests/test_cloud_placeholders.py
437
438
  tests/test_coating_unit.py
438
439
  tests/test_composite_node_name.py
439
440
  tests/test_connection_resolver.py
@@ -98,3 +98,15 @@ def test_the_audit_says_an_unstamped_master_and_a_file_modified_after_its_stamp(
98
98
  assert a["rm_lastra"]["targets"]["arch"]["why"].startswith("master senza sha256")
99
99
  assert a["rm_lastra"]["targets"]["web"]["state"] == "missing"
100
100
  assert api.asset_list(g)["counts"]["assets"] == 2
101
+
102
+
103
+ def test_a_version_says_the_geometry_keys_of_its_file():
104
+ """MICRO-ARCHIVE-ASSET-2: the same geometry placed elsewhere keeps its
105
+ keys — the page gathers the forms repeated (a mesh shared + instances)."""
106
+ raw = {"objects": [{"name": "a", "triangles": 10, "geometry_key": "g:2"},
107
+ {"name": "b", "triangles": 10, "geometry_key": "g:1"},
108
+ {"name": "c", "triangles": 10, "geometry_key": "g:2"},
109
+ {"name": "empty", "triangles": 0, "geometry_key": "g:0"}],
110
+ "compression": "draco"}
111
+ assert AL.geometry_keys(raw) == ["g:1", "g:2"]
112
+ assert AL.geometry_keys(None) == []
@@ -0,0 +1,86 @@
1
+ """MICRO-TESTATA-CLOUD (E.D. 1 Nov 2026) · a dataset in OneDrive, iCloud or
2
+ Dropbox «online only»: the files are there as placeholders and reading one
3
+ downloads it. The resolver is told by ``cloud(path)`` (the caller asks the
4
+ system, by metadata) and never opens such a file: not hashed, not probed for
5
+ zeros — it is ``in_cloud``, its place in ``cloud_path``, ``path`` empty so
6
+ nothing measures it. Archive › Asset says it and estimates from the graph."""
7
+ import hashlib
8
+
9
+ from s3dgraphy import api
10
+ from s3dgraphy.graph import Graph
11
+ from s3dgraphy.resources import asset_list as AL
12
+ from s3dgraphy.resources import locate as L
13
+
14
+ from tests.test_consolida_2 import _model
15
+ from tests.test_one_resolver import _project
16
+
17
+
18
+ def test_a_file_in_the_cloud_is_never_read(tmp_path):
19
+ root = _project(tmp_path)
20
+ f = root / "EM" / "DosCo" / "D.01.jpg"
21
+ hexd = hashlib.sha256(f.read_bytes()).hexdigest()
22
+ read = []
23
+
24
+ def hasher(p):
25
+ read.append(p)
26
+ return hashlib.sha256(open(p, "rb").read()).hexdigest()
27
+ cloud = lambda p: p.endswith("D.01.jpg") # noqa: E731
28
+ r = L.resolve({"id": "a", "locator": "/DosCo/D.01.jpg", "checksum": f"sha256:{hexd}"},
29
+ project_root=str(root), hasher=hasher, verify=True, cloud=cloud)
30
+ assert r["state"] == "in_cloud" and r["path"] == "" and r["cloud_path"].endswith("D.01.jpg")
31
+ assert "in the cloud" in r["note"] and read == []
32
+ # no digest recorded: still not hashed to ask the node
33
+ r = L.resolve({"id": "a", "locator": "/DosCo/D.01.jpg"}, project_root=str(root),
34
+ hasher=hasher, on_node=lambda h: True, cloud=cloud)
35
+ assert r["state"] == "in_cloud" and read == []
36
+ # a zero placeholder in the cloud is not probed (that would download it)
37
+ r = L.resolve({"id": "e", "locator": "DosCo/D.02.jpg"}, project_root=str(root),
38
+ cloud=lambda p: True)
39
+ assert r["state"] == "in_cloud"
40
+ # the node has it: on the node, the note says the copy here is in the cloud
41
+ r = L.resolve({"id": "a", "locator": "/DosCo/D.01.jpg", "checksum": f"sha256:{hexd}"},
42
+ project_root=str(root), on_node=lambda h: True, cloud=cloud)
43
+ assert r["state"] == "on_node" and "cloud" in r["note"]
44
+ # without `cloud` nothing changes
45
+ assert L.resolve({"id": "a", "locator": "/DosCo/D.01.jpg"}, project_root=str(root))["state"] == "on_disk"
46
+ # a system that cannot say is «not in the cloud»
47
+ def boom(p):
48
+ raise OSError("no")
49
+ assert L.resolve({"id": "a", "locator": "/DosCo/D.01.jpg"}, project_root=str(root),
50
+ cloud=boom)["state"] == "on_disk"
51
+
52
+
53
+ def test_resolve_files_passes_cloud_and_counts_it(tmp_path):
54
+ root = _project(tmp_path)
55
+ g = Graph("c")
56
+ api.add_resource(g, name="D.01", kind="image", files=[{"path": "/DosCo/D.01.jpg"}], resource_id="d1")
57
+ res = api.resolve_files(g, project_root=str(root), cloud=lambda p: True)
58
+ assert {r["state"] for r in res} == {"in_cloud"}
59
+ assert L.summary(res)["in_cloud"] == len(res)
60
+
61
+
62
+ def test_asset_list_says_the_versions_in_the_cloud(tmp_path):
63
+ g = Graph("lista")
64
+ v0, _ = _model(g, "col", "0", tris=60_000)
65
+ states = {v0["version_id"]: "in_cloud", "col": "in_cloud"}
66
+ measured = []
67
+ out = AL.asset_list(g, states=states, measure=lambda e: measured.append(e) or None)
68
+ a = out["assets"][0]
69
+ lod0 = next(v for v in a["versions"] if v["id"] == v0["version_id"])
70
+ assert lod0["in_cloud"] and lod0["state"] == "in_cloud" and not lod0["measured"]
71
+ assert lod0["triangles"] == 60_000 # the graph's estimate
72
+ assert v0["version_id"] in a["audit"]["files_in_cloud"]
73
+ assert out["counts"]["in_cloud"] >= 1 and "nel cloud" in out["say_it"]
74
+ assert a["targets"]["arch"]["state"] == "ok" and "cloud" in a["targets"]["arch"]["why"]
75
+
76
+
77
+ def test_list_versions_does_not_measure_a_version_in_the_cloud(tmp_path):
78
+ from s3dgraphy.resources import use_profiles as UP
79
+ from tests.test_consolida_2 import _glb, _png
80
+ v = tmp_path / "versions"
81
+ v.mkdir()
82
+ _glb(v / "Col@lod1-web.glb", [_png(512)])
83
+ _glb(v / "Col@lod2-mobile.glb", [_png(256)])
84
+ rows = {r["name"]: r for r in UP.list_versions(str(v), cloud=lambda p: "lod2" in p)}
85
+ assert rows["Col@lod2-mobile.glb"]["in_cloud"] and rows["Col@lod2-mobile.glb"]["triangles"] is None
86
+ assert not rows["Col@lod1-web.glb"].get("in_cloud") and rows["Col@lod1-web.glb"]["triangles"] == 1
File without changes