s3dgraphy 1.6.0.dev35__tar.gz → 1.6.0.dev36__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 (519) hide show
  1. {s3dgraphy-1.6.0.dev35/src/s3dgraphy.egg-info → s3dgraphy-1.6.0.dev36}/PKG-INFO +1 -1
  2. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/pyproject.toml +1 -1
  3. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/__init__.py +1 -1
  4. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/tools/node_finder.py +24 -5
  5. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36/src/s3dgraphy.egg-info}/PKG-INFO +1 -1
  6. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_node_finder.py +31 -1
  7. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_release.py +96 -6
  8. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/LICENSE +0 -0
  9. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/MANIFEST.in +0 -0
  10. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/README.md +0 -0
  11. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/setup.cfg +0 -0
  12. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/acquisition_descriptor.schema.json +0 -0
  13. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/acquisition_mappings/ercolano.json +0 -0
  14. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/acquisition_mappings/fs.json +0 -0
  15. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/acquisition_mappings/uri.json +0 -0
  16. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/datamodel_translations.json +0 -0
  17. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/em.ttl +0 -0
  18. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/em_document_types.json +0 -0
  19. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/em_extractor_types.json +0 -0
  20. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/em_palette_icons.json +0 -0
  21. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/em_qualia_types.json +0 -0
  22. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/em_qualia_types_additions.json +0 -0
  23. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/em_state_symbols.json +0 -0
  24. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/em_visual_rules.json +0 -0
  25. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/hdto_extension.ttl +0 -0
  26. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/new_qualia_template.json +0 -0
  27. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/node_registry.generated.json +0 -0
  28. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/outdated_s3dgraphy.ttl +0 -0
  29. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/outdated_s3dgraphy_nomapping.ttl +0 -0
  30. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json +0 -0
  31. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json.v155.bak +0 -0
  32. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/s3Dgraphy_node_datamodel.json +0 -0
  33. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/ActivityNodeGroup.svg +0 -0
  34. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.png +0 -0
  35. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.svg +0 -0
  36. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/EpochNode.svg +0 -0
  37. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/ParadataNodeGroup.svg +0 -0
  38. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/RSF.png +0 -0
  39. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/RSF.svg +0 -0
  40. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/SE.svg +0 -0
  41. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/SE_old.png +0 -0
  42. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/SE_old.svg +0 -0
  43. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/SF.png +0 -0
  44. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/SF.svg +0 -0
  45. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/TSU.png +0 -0
  46. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/US.png +0 -0
  47. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/US.svg +0 -0
  48. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/USD.png +0 -0
  49. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/USD.svg +0 -0
  50. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/USVn.png +0 -0
  51. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/USVn.svg +0 -0
  52. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/USVs.png +0 -0
  53. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/USVs.svg +0 -0
  54. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/UTR.svg +0 -0
  55. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/VSF.png +0 -0
  56. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/VSF.svg +0 -0
  57. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/author.png +0 -0
  58. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/author.svg +0 -0
  59. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/author_ai.png +0 -0
  60. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/author_ai.svg +0 -0
  61. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/combiner.png +0 -0
  62. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/combiner.svg +0 -0
  63. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/continuity.png +0 -0
  64. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/continuity.svg +0 -0
  65. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/document.png +0 -0
  66. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/document.svg +0 -0
  67. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/00_transformation.svg +0 -0
  68. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/01_topographicnetwork.svg +0 -0
  69. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/02_pointcloud.svg +0 -0
  70. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/03_mesh.svg +0 -0
  71. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/04_points.svg +0 -0
  72. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/05_lines.svg +0 -0
  73. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/06_polygons.svg +0 -0
  74. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/07_DEM.svg +0 -0
  75. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/08_ortophoto.svg +0 -0
  76. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/09_photos.svg +0 -0
  77. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/10_laserscanner.svg +0 -0
  78. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device.svg +0 -0
  79. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_computer.svg +0 -0
  80. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_drone.svg +0 -0
  81. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_gnss.svg +0 -0
  82. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_optical.svg +0 -0
  83. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_scanner.svg +0 -0
  84. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_sensor.svg +0 -0
  85. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_station.svg +0 -0
  86. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/12_gnss_survey.svg +0 -0
  87. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/13_field_drawing.svg +0 -0
  88. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/14_recording_sheet.svg +0 -0
  89. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/15_decimation.svg +0 -0
  90. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/16_georeferencing.svg +0 -0
  91. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/17_format_conversion.svg +0 -0
  92. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/18_classification.svg +0 -0
  93. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/dtc/19_vectorization.svg +0 -0
  94. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/embargo.png +0 -0
  95. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/embargo.svg +0 -0
  96. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/extractor.png +0 -0
  97. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/extractor.svg +0 -0
  98. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/gcp_set.svg +0 -0
  99. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/generic_node.svg +0 -0
  100. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/geo_position.svg +0 -0
  101. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/graph.svg +0 -0
  102. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/license.png +0 -0
  103. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/license.svg +0 -0
  104. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/link.svg +0 -0
  105. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/narrative.png +0 -0
  106. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/narrative.svg +0 -0
  107. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/play.svg +0 -0
  108. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/property.png +0 -0
  109. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/property.svg +0 -0
  110. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/registration_transform.svg +0 -0
  111. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/representation_model.svg +0 -0
  112. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/representation_model_doc.svg +0 -0
  113. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/representation_model_sf.svg +0 -0
  114. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/resource_file.svg +0 -0
  115. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/semantic_shape.svg +0 -0
  116. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/serSU.png +0 -0
  117. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/serSU.svg +0 -0
  118. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/serUSD.png +0 -0
  119. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/serUSV.png +0 -0
  120. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/serUSVn.svg +0 -0
  121. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/2D/serUSVs.svg +0 -0
  122. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/RSF.glb +0 -0
  123. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/SF.glb +0 -0
  124. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/TSU.glb +0 -0
  125. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/US.glb +0 -0
  126. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/USD.glb +0 -0
  127. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/USVn.glb +0 -0
  128. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/USVs.glb +0 -0
  129. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/VSF.glb +0 -0
  130. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/combiner.glb +0 -0
  131. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/continuity.glb +0 -0
  132. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/document.glb +0 -0
  133. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/extractor.glb +0 -0
  134. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/property.glb +0 -0
  135. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/serSU.glb +0 -0
  136. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/serUSD.glb +0 -0
  137. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/JSON_config/src/3D/serUSV.glb +0 -0
  138. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/acquisition/__init__.py +0 -0
  139. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/acquisition/acquire.py +0 -0
  140. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/acquisition/descriptor.py +0 -0
  141. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/acquisition/mapping.py +0 -0
  142. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/ai_validation.py +0 -0
  143. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/annotation/__init__.py +0 -0
  144. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/annotation/migrate_reading.py +0 -0
  145. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/annotation/paradata.py +0 -0
  146. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/annotation/reading.py +0 -0
  147. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/api.py +0 -0
  148. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/authorities/__init__.py +0 -0
  149. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/authorities/resolver.py +0 -0
  150. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/authorities/snapshots/LICENSE +0 -0
  151. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/authorities/snapshots/chronontology.jsonld +0 -0
  152. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/authorities/snapshots/getty_aat.jsonld +0 -0
  153. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/authorities/snapshots/getty_tgn.jsonld +0 -0
  154. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/authorities/snapshots/periodo.jsonld +0 -0
  155. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/authorities/snapshots/provenance.json +0 -0
  156. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/classification.py +0 -0
  157. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/container.py +0 -0
  158. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/contract/__init__.py +0 -0
  159. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/contract/connector.py +0 -0
  160. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/contract/consumer.py +0 -0
  161. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/contract/core.py +0 -0
  162. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/contract/reference.py +0 -0
  163. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/crdt.py +0 -0
  164. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/data/StratiMiner_Extraction_Prompt.md +0 -0
  165. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/datamodel.py +0 -0
  166. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/diagnostics.py +0 -0
  167. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/dissemination.py +0 -0
  168. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/dtc/__init__.py +0 -0
  169. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/dtc/capture.py +0 -0
  170. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/dtc/corpus.py +0 -0
  171. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/dtc/devices.py +0 -0
  172. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/dtc/ingest.py +0 -0
  173. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/dtc/neighbourhood.py +0 -0
  174. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/dtc/residency.py +0 -0
  175. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/edges/__init__.py +0 -0
  176. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/edges/connection_resolver.py +0 -0
  177. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/edges/connections_loader.py +0 -0
  178. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/edges/edge.py +0 -0
  179. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/editorial.py +0 -0
  180. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/__init__.py +0 -0
  181. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/docx_exporter.py +0 -0
  182. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/emjson_exporter.py +0 -0
  183. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/__init__.py +0 -0
  184. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/canvas_generator.py +0 -0
  185. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/edge_generator.py +0 -0
  186. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/epoch_generator.py +0 -0
  187. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/graphml_exporter.py +0 -0
  188. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/graphml_patcher.py +0 -0
  189. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/group_node_generator.py +0 -0
  190. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/node_generator.py +0 -0
  191. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/node_registry.py +0 -0
  192. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/palette_resources.py +0 -0
  193. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/paradata_generator.py +0 -0
  194. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/paradata_image_generator.py +0 -0
  195. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/paradata_node_generators.py +0 -0
  196. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/table_node_generator.py +0 -0
  197. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/graphml/utils.py +0 -0
  198. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/html_exporter.py +0 -0
  199. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/ipynb_exporter.py +0 -0
  200. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/json_exporter.py +0 -0
  201. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/latex_exporter.py +0 -0
  202. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/rdf_exporter.py +0 -0
  203. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/exporter/unified_xlsx_exporter.py +0 -0
  204. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/geometry/__init__.py +0 -0
  205. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/geometry/aton.py +0 -0
  206. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/geometry/gltf.py +0 -0
  207. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/geometry/migrate.py +0 -0
  208. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/geometry/proxy.py +0 -0
  209. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/geometry/reading_glb.py +0 -0
  210. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/geometry/store_backed.py +0 -0
  211. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/geometry/wkt.py +0 -0
  212. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/graph.py +0 -0
  213. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/iiif.py +0 -0
  214. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/__init__.py +0 -0
  215. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/base_importer.py +0 -0
  216. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/csv_importer.py +0 -0
  217. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/emjson_importer.py +0 -0
  218. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/fmpxml_importer.py +0 -0
  219. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/import_graphml.py +0 -0
  220. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/mapped_xlsx_importer.py +0 -0
  221. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/metashape_project.py +0 -0
  222. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/pyarchinit_importer.py +0 -0
  223. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/qualia_importer.py +0 -0
  224. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/rdf_importer.py +0 -0
  225. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/sheet_header.py +0 -0
  226. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/source_text.py +0 -0
  227. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/unified_xlsx_importer.py +0 -0
  228. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/xlsx_importer.py +0 -0
  229. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/importer/xml_importer.py +0 -0
  230. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/indices.py +0 -0
  231. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/language.py +0 -0
  232. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/__init__.py +0 -0
  233. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/authoring.py +0 -0
  234. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/emdb/generic_specialfind_mapping.json +0 -0
  235. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/emdb/site_properties_mapping.json +0 -0
  236. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/emdb/usm_mapping.json +0 -0
  237. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/generic/excel_to_graphml_mapping.json +0 -0
  238. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/pyarchinit/pyarchinit_us_mapping.json +0 -0
  239. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/registry.py +0 -0
  240. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/source_list/em_sourcelist_it.json +0 -0
  241. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/source_list/source_list_mapping.json +0 -0
  242. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/template_emdb_mapping.json +0 -0
  243. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/mappings/template_pyarchinit_mapping.json +0 -0
  244. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/merge/__init__.py +0 -0
  245. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/merge/graph_merger.py +0 -0
  246. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/multigraph/__init__.py +0 -0
  247. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/multigraph/multigraph.py +0 -0
  248. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/narrative/__init__.py +0 -0
  249. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/narrative/bake.py +0 -0
  250. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/narrative/generation.py +0 -0
  251. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/narrative/query.py +0 -0
  252. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/narrative/registry.py +0 -0
  253. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/narrative/site_story.py +0 -0
  254. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/__init__.py +0 -0
  255. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/annotation_region_node.py +0 -0
  256. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/author_node.py +0 -0
  257. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/base_node.py +0 -0
  258. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/combiner_node.py +0 -0
  259. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/document_node.py +0 -0
  260. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/dtc_acquisition_node.py +0 -0
  261. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/dtc_device_node.py +0 -0
  262. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/dtc_node.py +0 -0
  263. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/dtc_process_node.py +0 -0
  264. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/embargo_node.py +0 -0
  265. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/epoch_node.py +0 -0
  266. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/extractor_node.py +0 -0
  267. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/geo_position_node.py +0 -0
  268. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/georeferencing_node.py +0 -0
  269. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/graph_node.py +0 -0
  270. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/group_node.py +0 -0
  271. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/hdt_node.py +0 -0
  272. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/heritage_entity_node.py +0 -0
  273. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/license_node.py +0 -0
  274. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/narrative_node.py +0 -0
  275. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/paradata_node.py +0 -0
  276. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/project_node.py +0 -0
  277. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/property_node.py +0 -0
  278. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/representation_node.py +0 -0
  279. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/resource_file_node.py +0 -0
  280. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/resource_node.py +0 -0
  281. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/semantic_shape_node.py +0 -0
  282. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/stratigraphic_node.py +0 -0
  283. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/study_node.py +0 -0
  284. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/nodes/translation_node.py +0 -0
  285. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/ownership.py +0 -0
  286. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/photogrammetry/__init__.py +0 -0
  287. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/photogrammetry/delta.py +0 -0
  288. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/project_tree.py +0 -0
  289. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/publication.py +0 -0
  290. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/rapporti.py +0 -0
  291. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resolvers/__init__.py +0 -0
  292. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resolvers/builtin_rules.py +0 -0
  293. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resolvers/property_resolver.py +0 -0
  294. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resources/__init__.py +0 -0
  295. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resources/addresses.py +0 -0
  296. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resources/files.py +0 -0
  297. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resources/fs_backend.py +0 -0
  298. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resources/locate.py +0 -0
  299. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resources/minio_backend.py +0 -0
  300. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resources/resolver.py +0 -0
  301. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resources/tiles3tz.py +0 -0
  302. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/resources/versions.py +0 -0
  303. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/rights.py +0 -0
  304. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/shelf/__init__.py +0 -0
  305. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/shelf/core.py +0 -0
  306. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/stamp/__init__.py +0 -0
  307. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/stamp/absorb.py +0 -0
  308. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/stamp/emit.py +0 -0
  309. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/stamp/hints.py +0 -0
  310. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/stamp/identity.py +0 -0
  311. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/study.py +0 -0
  312. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/__init__.py +0 -0
  313. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/_db_handle.py +0 -0
  314. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/_legacy_paradata_svgs.py +0 -0
  315. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/_workspace.py +0 -0
  316. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/conflict_resolver.py +0 -0
  317. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/edge_registry.py +0 -0
  318. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/graph_ingestor.py +0 -0
  319. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/graph_projector.py +0 -0
  320. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/graphml_writer.py +0 -0
  321. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/group_projector.py +0 -0
  322. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/group_store.py +0 -0
  323. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/ingest_result.py +0 -0
  324. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/paradata_store.py +0 -0
  325. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/pyarchinit_pg_importer.py +0 -0
  326. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/rapporti.py +0 -0
  327. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/uuid7.py +0 -0
  328. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/vocab_provider_core.py +0 -0
  329. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/vocab_types.py +0 -0
  330. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/yed_classifier.py +0 -0
  331. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/yed_detector.py +0 -0
  332. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/yed_group_walker.py +0 -0
  333. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/yed_import_pipeline.py +0 -0
  334. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/yed_rapporti_policy.py +0 -0
  335. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/sync/yed_table_parser.py +0 -0
  336. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/templates/em_data_template.xlsx +0 -0
  337. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/templates/em_palette_template.graphml +0 -0
  338. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/temporal/__init__.py +0 -0
  339. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/temporal/inference_engine.py +0 -0
  340. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/tools/__init__.py +0 -0
  341. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/tools/consumer_drift.py +0 -0
  342. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/tools/datamodel_i18n.py +0 -0
  343. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/tools/deliverable_report.py +0 -0
  344. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/tools/glyph_sheet.py +0 -0
  345. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/tools/glyphs_from_svg.py +0 -0
  346. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/tools/sync_node_datamodel.py +0 -0
  347. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/tools/wheel_drift.py +0 -0
  348. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/transforms/__init__.py +0 -0
  349. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/transforms/aux_tracking.py +0 -0
  350. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/transforms/compact.py +0 -0
  351. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/transforms/materialize_continuity.py +0 -0
  352. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/translation.py +0 -0
  353. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/utils/__init__.py +0 -0
  354. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/utils/utils.py +0 -0
  355. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/utils/visual_layout.py +0 -0
  356. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy/zero_hour.py +0 -0
  357. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy.egg-info/SOURCES.txt +0 -0
  358. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy.egg-info/dependency_links.txt +0 -0
  359. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy.egg-info/requires.txt +0 -0
  360. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/src/s3dgraphy.egg-info/top_level.txt +0 -0
  361. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_acquisition.py +0 -0
  362. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_acquisition_fs.py +0 -0
  363. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_add_resource.py +0 -0
  364. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_ai_validation_nodes.py +0 -0
  365. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_api_surface.py +0 -0
  366. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_asset_dtc_protocol.py +0 -0
  367. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_asset_versions.py +0 -0
  368. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_aton_shapes.py +0 -0
  369. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_attach_only.py +0 -0
  370. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_authority_projection.py +0 -0
  371. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_authority_resolver.py +0 -0
  372. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_blend_locator.py +0 -0
  373. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_canonical_document_rename.py +0 -0
  374. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_canvas_metadata_import.py +0 -0
  375. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_capture_acquisition.py +0 -0
  376. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_capture_rdf_class.py +0 -0
  377. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_chronology_on_request.py +0 -0
  378. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_coating_unit.py +0 -0
  379. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_composite_node_name.py +0 -0
  380. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_connection_resolver.py +0 -0
  381. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_consumer_drift.py +0 -0
  382. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_container.py +0 -0
  383. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_container_layouts.py +0 -0
  384. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_containment_tpq.py +0 -0
  385. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_contract.py +0 -0
  386. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_contract_consumer.py +0 -0
  387. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_convert_command.py +0 -0
  388. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_crdt.py +0 -0
  389. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_datamodel_fingerprint.py +0 -0
  390. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_datamodel_i18n.py +0 -0
  391. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_deterministic_ids.py +0 -0
  392. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dev29_em_sourcelist.py +0 -0
  393. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dev29_file_set_stamp.py +0 -0
  394. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dev29_graphml_without_a_database.py +0 -0
  395. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dev29_image_set_texturing.py +0 -0
  396. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dev29_not_georeferenced.py +0 -0
  397. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dev29_one_act_n_outputs.py +0 -0
  398. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dev29_ttl_round_trip.py +0 -0
  399. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dev30_decisions.py +0 -0
  400. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_devices.py +0 -0
  401. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dissemination_tombstones.py +0 -0
  402. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dove_sta_il_testo.py +0 -0
  403. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dtc_corpus.py +0 -0
  404. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dtc_ingest.py +0 -0
  405. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dtc_neighbourhood.py +0 -0
  406. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dtc_projection.py +0 -0
  407. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_dtc_residency.py +0 -0
  408. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_edge_ui_phrases.py +0 -0
  409. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_editorial.py +0 -0
  410. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_em_ttl_matches_the_datamodels.py +0 -0
  411. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_emjson_roundtrip.py +0 -0
  412. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_emjson_schema_version.py +0 -0
  413. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_epoch_properties_and_sub_epochs.py +0 -0
  414. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_epoch_undated_import.py +0 -0
  415. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_explicit_node_type_marker.py +0 -0
  416. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_extracted_from_unit.py +0 -0
  417. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_filtered_import.py +0 -0
  418. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_fmpxml_importer.py +0 -0
  419. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_fs_backend.py +0 -0
  420. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_functional_units.py +0 -0
  421. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_georeference_scene.py +0 -0
  422. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_gltf_stitch.py +0 -0
  423. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_glyph_paths.py +0 -0
  424. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_graph_indices_edges.py +0 -0
  425. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_graph_scope_migration.py +0 -0
  426. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_hdto_projection.py +0 -0
  427. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_header_key_aliases.py +0 -0
  428. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_i_generi_dei_passi.py +0 -0
  429. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_iiif.py +0 -0
  430. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_il_modo_d_accesso.py +0 -0
  431. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_il_modo_dal_relay.py +0 -0
  432. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_il_proprietario_si_legge.py +0 -0
  433. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_il_riallineamento.py +0 -0
  434. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_importer_edge_hygiene.py +0 -0
  435. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_ipynb_exporter.py +0 -0
  436. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_la_lingua_alla_nascita.py +0 -0
  437. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_la_lingua_dei_dati.py +0 -0
  438. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_la_lingua_nell_op.py +0 -0
  439. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_la_riga_d_intestazione.py +0 -0
  440. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_latex_exporter.py +0 -0
  441. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_le_traduzioni.py +0 -0
  442. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_lod_levels.py +0 -0
  443. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_lossless_roundtrip.py +0 -0
  444. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_mapping_authoring.py +0 -0
  445. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_mapping_csv_and_relations.py +0 -0
  446. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_masonry_unit.py +0 -0
  447. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_material_color.py +0 -0
  448. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_merge_conflicts.py +0 -0
  449. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_metashape_project.py +0 -0
  450. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_migrate_legacy_proxy.py +0 -0
  451. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_minio_backend.py +0 -0
  452. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_authorship.py +0 -0
  453. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_bake_docx.py +0 -0
  454. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_figures.py +0 -0
  455. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_generation.py +0 -0
  456. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_mentions.py +0 -0
  457. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_node.py +0 -0
  458. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_query.py +0 -0
  459. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_scaffolder.py +0 -0
  460. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_site_place.py +0 -0
  461. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_narrative_unvalidated_export.py +0 -0
  462. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_node_datamodel_registry.py +0 -0
  463. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_node_type_map_integrity.py +0 -0
  464. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_one_resolver.py +0 -0
  465. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_one_spelling_writers.py +0 -0
  466. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_op_vocabulary.py +0 -0
  467. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_pg_importer.py +0 -0
  468. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_photogrammetry_delta.py +0 -0
  469. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_physical_relation_spellings.py +0 -0
  470. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_piu_indirizzi.py +0 -0
  471. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_promotion.py +0 -0
  472. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_property_owners.py +0 -0
  473. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_proxy_resource.py +0 -0
  474. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_proxy_retype.py +0 -0
  475. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_psx_locator.py +0 -0
  476. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_pyarchinit_tier2.py +0 -0
  477. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_qualia_dai_d7_d8.py +0 -0
  478. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_rdf_embedding.py +0 -0
  479. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_rdf_reverse_edges.py +0 -0
  480. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_rdf_roundtrip.py +0 -0
  481. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_reading_coords.py +0 -0
  482. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_reading_glb.py +0 -0
  483. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_reading_migration.py +0 -0
  484. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_reading_place.py +0 -0
  485. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_reading_rdf.py +0 -0
  486. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_recompute_warnings.py +0 -0
  487. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_reproject.py +0 -0
  488. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_resource_file_node.py +0 -0
  489. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_resource_files_implicit.py +0 -0
  490. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_resource_layer.py +0 -0
  491. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_resource_representations.py +0 -0
  492. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_resource_revision.py +0 -0
  493. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_resource_tier.py +0 -0
  494. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_reverse_edges.py +0 -0
  495. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_rm_container_node_group.py +0 -0
  496. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_semantic_purity.py +0 -0
  497. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_shelf.py +0 -0
  498. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_shelf_facets.py +0 -0
  499. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_shelf_hatting.py +0 -0
  500. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_shelf_role_uri_table.py +0 -0
  501. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_shipped_mappings.py +0 -0
  502. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_source_list_mapping.py +0 -0
  503. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_source_text.py +0 -0
  504. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_stamp.py +0 -0
  505. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_stamp_hints.py +0 -0
  506. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_stamp_title_description.py +0 -0
  507. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_store_backed_geometry.py +0 -0
  508. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_stratiminer_api.py +0 -0
  509. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_study_metadata.py +0 -0
  510. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_tileset_resource.py +0 -0
  511. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_ttl_roundtrip.py +0 -0
  512. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_unit_definition.py +0 -0
  513. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_verifica_provenance.py +0 -0
  514. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_visual_assets.py +0 -0
  515. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_wheel_drift.py +0 -0
  516. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_xlsx_containment_and_unknown_bounds.py +0 -0
  517. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_xlsx_importer_graph_init.py +0 -0
  518. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/tests/test_xlsx_source_column.py +0 -0
  519. {s3dgraphy-1.6.0.dev35 → s3dgraphy-1.6.0.dev36}/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.dev35
3
+ Version: 1.6.0.dev36
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.dev35"
7
+ version = "1.6.0.dev36"
8
8
  description = "3D Stratigraphic Graph Management Library for archaeological and heritage applications"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,4 +1,4 @@
1
- __version__ = "1.6.0.dev35"
1
+ __version__ = "1.6.0.dev36"
2
2
  __datamodel_version__ = "1.5.5" # s3Dgraphy connections datamodel version
3
3
 
4
4
  # s3Dgraphy/__init__.py
@@ -102,10 +102,25 @@ def parse_avahi(text: str) -> List[Dict[str, str]]:
102
102
  for line in text.splitlines():
103
103
  parts = line.split(";")
104
104
  if len(parts) >= 9 and parts[0] == "=":
105
- out.append({"name": parts[3], "host": parts[6], "address": parts[7], "port": parts[8]})
105
+ out.append({"name": parts[3], "host": parts[6], "address": parts[7], "port": parts[8],
106
+ "txt": parts[9] if len(parts) > 9 else ""})
106
107
  return out
107
108
 
108
109
 
110
+ def url_of(host: str, port: str, txt: str = "") -> str:
111
+ """The node's address from what DNS-SD gives: host, port and the TXT keys
112
+ ``scheme`` (default ``http``) and ``path`` (default none). The personal node
113
+ announces ``path=/``; the dev stack behind Caddy announces ``scheme=https
114
+ path=/em`` (``fcn-up.sh``), because that port answers https and the API
115
+ lives under ``/em`` — ``http://host:8443`` would be a node that never answers."""
116
+ keys = dict(m.groups() for m in re.finditer(r'"?([A-Za-z][\w-]*)=([^"\s]*)"?', txt or ""))
117
+ scheme = keys.get("scheme") if keys.get("scheme") in ("http", "https") else "http"
118
+ path = (keys.get("path") or "").rstrip("/")
119
+ if path and not path.startswith("/"):
120
+ path = "/" + path
121
+ return f"{scheme}://{host.rstrip('.')}:{port}{path}"
122
+
123
+
109
124
  def browse_lan(timeout: float = 3.0, *, tool: Optional[str] = None,
110
125
  runner: Optional[Callable[..., Any]] = None) -> Dict[str, Any]:
111
126
  """The nodes that announce themselves on the local network.
@@ -120,7 +135,7 @@ def browse_lan(timeout: float = 3.0, *, tool: Optional[str] = None,
120
135
  try:
121
136
  done = run(["avahi-browse", "-rpt", SERVICE], capture_output=True, text=True,
122
137
  timeout=timeout)
123
- found = [{"name": f["name"], "url": f"http://{f['host']}:{f['port']}"}
138
+ found = [{"name": f["name"], "url": url_of(f["host"], f["port"], f.get("txt", ""))}
124
139
  for f in parse_avahi(done.stdout)]
125
140
  return {"how": "avahi-browse", "found": found, "note": ""}
126
141
  except Exception as exc: # noqa: BLE001
@@ -146,7 +161,8 @@ def browse_lan(timeout: float = 3.0, *, tool: Optional[str] = None,
146
161
 
147
162
  def resolve_dns_sd(name: str, *, timeout: float = 3.0,
148
163
  runner: Optional[Callable[..., Any]] = None) -> Optional[str]:
149
- """``dns-sd -L <name>`` → ``http://<host>:<port>``, or None."""
164
+ """``dns-sd -L <name>`` → ``<scheme>://<host>:<port><path>`` (:func:`url_of`;
165
+ the TXT record is the line after «can be reached at»), or None."""
150
166
  run = runner or subprocess.run
151
167
  try:
152
168
  done = run(["dns-sd", "-L", name, SERVICE, "local."], capture_output=True, text=True,
@@ -156,8 +172,11 @@ def resolve_dns_sd(name: str, *, timeout: float = 3.0,
156
172
  text = exc.stdout.decode() if isinstance(exc.stdout, bytes) else (exc.stdout or "")
157
173
  except Exception: # noqa: BLE001
158
174
  return None
159
- m = re.search(r"can be reached at (\S+?)\.?:(\d+)", text)
160
- return f"http://{m.group(1).rstrip('.')}:{m.group(2)}" if m else None
175
+ m = re.search(r"can be reached at (\S+?)\.?:(\d+)[^\n]*\n?([^\n]*)", text)
176
+ if not m:
177
+ return None
178
+ txt = m.group(3) if "=" in m.group(3) and "can be reached" not in m.group(3) else ""
179
+ return url_of(m.group(1), m.group(2), txt)
161
180
 
162
181
 
163
182
  def find_nodes(*, saved: Iterable[str] = (), typed: str = "", lan: bool = True,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: s3dgraphy
3
- Version: 1.6.0.dev35
3
+ Version: 1.6.0.dev36
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>
@@ -22,7 +22,37 @@ def test_parse_dns_sd_and_avahi():
22
22
  assert N.parse_dns_sd(DNS_SD_B) == [{"domain": "local", "name": "StratiGraph lab (fcn)"}]
23
23
  avahi = "=;eth0;IPv4;StratiGraph lab;_stratigraph._tcp;local;fcn.local;192.168.1.9;8777;\n"
24
24
  assert N.parse_avahi(avahi) == [{"name": "StratiGraph lab", "host": "fcn.local",
25
- "address": "192.168.1.9", "port": "8777"}]
25
+ "address": "192.168.1.9", "port": "8777", "txt": ""}]
26
+
27
+
28
+ #: measured 4 Oct 2026 on this Mac: `dns-sd -R probe-fcn-test _stratigraph._tcp
29
+ #: local. 8443 path=/em scheme=https`, then `dns-sd -L` — the TXT is the next line
30
+ DNS_SD_L_FCN = """Lookup probe-fcn-test._stratigraph._tcp.local.
31
+ DATE: ---Sun 04 Oct 2026---
32
+ 13:14:54.518 ...STARTING...
33
+ 13:14:54.519 probe-fcn-test._stratigraph._tcp.local. can be reached at MacBook-Pro-di-Emanuel.local.:8443 (interface 14) Flags: 1
34
+ path=/em scheme=https
35
+ 13:14:54.519 probe-fcn-test._stratigraph._tcp.local. can be reached at MacBook-Pro-di-Emanuel.local.:8443 (interface 14)
36
+ path=/em scheme=https
37
+ """
38
+
39
+
40
+ def test_the_dev_stack_announced_by_fcn_up_resolves_to_its_https_door():
41
+ def runner(cmd, **kw):
42
+ raise subprocess.TimeoutExpired(cmd, 1, output=DNS_SD_L_FCN)
43
+ assert N.resolve_dns_sd("probe-fcn-test", runner=runner) == \
44
+ "https://MacBook-Pro-di-Emanuel.local:8443/em"
45
+ avahi = ('=;eth0;IPv4;StratiGraph fcn;_stratigraph._tcp;local;fcn.local;192.168.1.9;8443;'
46
+ '"scheme=https" "path=/em"\n')
47
+ got = N.browse_lan(1, tool="avahi-browse",
48
+ runner=lambda cmd, **kw: subprocess.CompletedProcess(cmd, 0, avahi, ""))
49
+ assert got["found"] == [{"name": "StratiGraph fcn", "url": "https://fcn.local:8443/em"}]
50
+
51
+
52
+ def test_the_personal_node_path_slash_stays_a_bare_address():
53
+ assert N.url_of("fcn.local.", "8777", "path=/") == "http://fcn.local:8777"
54
+ assert N.url_of("fcn.local", "8777", "") == "http://fcn.local:8777"
55
+ assert N.url_of("h.local", "1", "scheme=gopher path=em") == "http://h.local:1/em"
26
56
 
27
57
 
28
58
  def test_browse_lan_with_dns_sd_resolves_the_url():
@@ -239,6 +239,27 @@ esac
239
239
 
240
240
  CHANGELOG = "# Changelog\n\n## [0.1.3] — YYYY-MM-DD <!-- the date is written when the tag is made -->\n\nNew.\n"
241
241
 
242
+ # step 10, the development node: `docker ps` says em-dev-server runs when
243
+ # FAKE_NODE_UP is set; /v1/health is a file:// URL whose JSON the fake
244
+ # bump-s3dgraphy.sh rewrites FAKE_NODE_RESTART seconds after the rebuild (the
245
+ # container restarting), or never with FAKE_NODE_STUCK
246
+ FAKE_DOCKER = r"""#!/usr/bin/env bash
247
+ echo "docker $*" >> "$FAKE_STATE/docker.log"
248
+ [[ "$1" == ps ]] || exit 0
249
+ [[ -n "$FAKE_NODE_UP" ]] && echo em-dev-server
250
+ exit 0
251
+ """
252
+
253
+ SERVER_BUMP = r"""#!/usr/bin/env bash
254
+ set -e
255
+ { echo "$*"; git log -1 --format=%s; git rev-list --count @{u}..HEAD; } > "$FAKE_STATE/bump.log"
256
+ [[ -n "$FAKE_NODE_STUCK" ]] && exit 0
257
+ rm -f "$FAKE_STATE/health.json"
258
+ ( sleep "${FAKE_NODE_RESTART:-0}"
259
+ printf '{"version": "1.6.0.dev2", "s3dgraphy": "%s"}' "$1" > "$FAKE_STATE/health.tmp"
260
+ mv "$FAKE_STATE/health.tmp" "$FAKE_STATE/health.json" ) >/dev/null 2>&1 &
261
+ """
262
+
242
263
 
243
264
  # ── the world ─────────────────────────────────────────────────────────────────
244
265
 
@@ -268,6 +289,8 @@ class World:
268
289
  "EM_RELEASE_PYTHON": str(self.bin / "fakepython"), "EM_RELEASE_TMP": str(tmp / "t"),
269
290
  "EM_RELEASE_POLL": "0.02", "EM_RELEASE_WAIT_TAG": "3", "EM_RELEASE_WAIT_RUN": "3",
270
291
  "EM_RELEASE_WAIT_PYPI": "5", "EM_RELEASE_WAIT_BUILD": "5", "EM_RELEASE_PROGRESS": "0.02",
292
+ "EM_RELEASE_DOCKER": str(self.bin / "docker"),
293
+ "EM_RELEASE_NODE_HEALTH": (self.state / "health.json").as_uri(),
271
294
  "EM_RELEASE_DOWNSTREAM": json.dumps([{"repo": "EM-blender-tools", "cmd": [
272
295
  "bash", "-c", 'echo "$FAKE_DOWNSTREAM_SAYS"; exit "${FAKE_DOWNSTREAM_RC:-0}"']}]),
273
296
  })
@@ -275,6 +298,8 @@ class World:
275
298
  _x(self.bin / "gh", FAKE_GH)
276
299
  _x(self.bin / "pip", FAKE_PIP)
277
300
  _x(self.bin / "fakepython", FAKE_PYTHON)
301
+ _x(self.bin / "docker", FAKE_DOCKER)
302
+ (self.state / "health.json").write_text('{"version": "1.6.0.dev1", "s3dgraphy": "1.6.0.dev27"}')
278
303
 
279
304
  self.repo("s3Dgraphy", {
280
305
  "pyproject.toml": f'[project]\nname = "s3dgraphy"\nversion = "1.6.0.dev27"\ndependencies = [\n'
@@ -302,7 +327,8 @@ class World:
302
327
  (et / "wheels" / cp / w).write_text("")
303
328
  _x(et / ".venv" / "bin" / "python", EMTOOLS_VENV_PY)
304
329
  (et / ".venv" / "versions").write_text("1.6.0.dev26\n0.1.2\n")
305
- self.repo("stratigraph-server", {"pyproject.toml": 'dependencies = [\n "s3dgraphy[geo,rdf]==1.6.0.dev27",\n]\n'})
330
+ self.repo("stratigraph-server", {"pyproject.toml": 'dependencies = [\n "s3dgraphy[geo,rdf]==1.6.0.dev27",\n]\n',
331
+ "bump-s3dgraphy.sh": SERVER_BUMP})
306
332
  self.repo("stratigraph-templates", {"registry/s3dgraphy-snapshot.json": '{\n "s3dgraphy_version": "1.6.0.dev27"\n}\n'})
307
333
  self.repo("stratigraph-chatbot", {"pyproject.toml": 'dependencies = [\n "s3dgraphy>=1.6.0.dev22",\n]\n',
308
334
  "schede/a.json": "{}\n"})
@@ -359,7 +385,7 @@ def test_the_whole_row_in_dry_run_writes_nothing(world):
359
385
  before = world.snapshot()
360
386
  r = world.release(*FULL, "--dry-run")
361
387
  assert r.returncode == 0, _all(r)
362
- for n in range(1, 12):
388
+ for n in range(1, 13):
363
389
  assert f" {n:>2} " in r.stdout, f"step {n} missing:\n{r.stdout}"
364
390
  assert " ✓ 1 done" in r.stdout
365
391
  assert " → 2 to do" in r.stdout
@@ -386,7 +412,7 @@ def test_the_round_goes_through_and_status_says_done(world):
386
412
  assert subjects == {
387
413
  "stratigraph-templates": f"Snapshot s3Dgraphy {V} from PyPI",
388
414
  "stratigraph-chatbot": f"Vendor the schede against s3Dgraphy {V} and require it",
389
- "stratigraph-server": f"Pin s3dgraphy {V} in one place and its two copies",
415
+ "stratigraph-server": f"Pin s3dgraphy {V} in one place and its two copies, and count one more iteration of the server",
390
416
  "EM-blender-tools": f"Bundle s3dgraphy {V} and dtcstamp {D}"}
391
417
  assert f'"s3dgraphy>={V}"' in world.git(world.ws / "stratigraph-chatbot", "show", "HEAD:pyproject.toml")
392
418
  req = world.git(world.ws / "EM-blender-tools", "show", "HEAD:scripts/requirements_wheels.txt")
@@ -405,7 +431,7 @@ def test_the_round_goes_through_and_status_says_done(world):
405
431
  # and status agrees, with its proofs
406
432
  st = world.release("status", *FULL)
407
433
  assert st.returncode == 0, _all(st)
408
- assert st.stdout.count(" done ") == 12, st.stdout # 0 … 11
434
+ assert st.stdout.count(" done ") == 12, st.stdout # 0 … 12, but 10: the em-dev stack is down here
409
435
  assert f"s3dgraphy {V} is on PyPI" in st.stdout and f"dtcstamp {D} is on PyPI" in st.stdout
410
436
  assert "every step is done" in st.stdout
411
437
  # a second run does nothing and says so
@@ -474,7 +500,7 @@ def test_resume_after_step_9(world):
474
500
  assert r.returncode == 1, _all(r)
475
501
  assert "not committed: EMStudio" in _all(r)
476
502
  assert world.git(world.ws / "EMStudio", "status", "--porcelain") # its pin still waits
477
- assert "git push" not in r.stdout # step 10 was not reached
503
+ assert "git push" not in r.stdout # step 11 was not reached
478
504
  r = world.release(*FULL, "--yes")
479
505
  assert r.returncode == 0, _all(r)
480
506
  for n in ("stratigraph-templates", "stratigraph-chatbot", "stratigraph-server", "EM-blender-tools"):
@@ -703,7 +729,7 @@ def test_a_long_wait_says_the_jobs_and_their_step(world):
703
729
  out = r.stdout
704
730
  assert f"▸ 2 · publish.yml for v{D} · " in out
705
731
  assert f"▸ 4 · publish.yml for v{V} · " in out
706
- assert "▸ 11 · build desktop v1.6.0-dev.1 · " in out
732
+ assert "▸ 12 · build desktop v1.6.0-dev.1 · " in out
707
733
  assert "macos-arm64 in progress · step «tauri build»" in out
708
734
  assert "linux done ✓" in out
709
735
  # not a terminal: a new line per change of state, not one per look
@@ -818,3 +844,67 @@ def test_without_a_terminal_and_without_yes_nobody_says_yes(monkeypatch, capsys)
818
844
  monkeypatch.setattr(sys, "stdin", io.StringIO("y\n")) # a pipe that answers: as before
819
845
  assert c.ask("Push these 3 repositories?") is True
820
846
  assert R.Ctx(V, None, False, False, True).ask("anything?") is True # --yes
847
+
848
+
849
+ # ── W3: the release updates the development node (measured on 4 Oct 2026) ────
850
+ #
851
+ # After `./em.sh release 1.6.0.dev34 --desktop` the server's pin was dev34 in
852
+ # its files and the node on this computer still answered dev33 on /v1/health:
853
+ # step 6 only printed «Per applicarlo: ./bump-s3dgraphy.sh … --build».
854
+
855
+ def test_the_development_node_is_a_step_of_the_dry_run(world):
856
+ up = world.release(*FULL, "--dry-run", FAKE_NODE_UP=1)
857
+ assert up.returncode == 0, _all(up)
858
+ assert "10 blocked the development node: ./bump-s3dgraphy.sh V --build if em-dev is up" in up.stdout
859
+ assert f"would run in stratigraph-server: [Y/n, yes in 10 s] ./bump-s3dgraphy.sh {V} --build" in up.stdout
860
+ assert f'"s3dgraphy": "{V}" (cap 180 s)' in up.stdout
861
+ assert " 11 done the push" in up.stdout and " 12 blocked the desktop" in up.stdout # nothing ahead yet
862
+ assert not (world.state / "bump.log").exists() # a dry-run rebuilds nothing
863
+ down = world.release(*FULL, "--dry-run")
864
+ assert down.returncode == 0, _all(down)
865
+ assert " - 10 not up" in down.stdout
866
+ assert "em-dev-server is not running — the em-dev stack is down, nothing to rebuild" in down.stdout
867
+
868
+
869
+ def test_with_the_stack_up_it_rebuilds_the_node_and_waits_for_its_health(world):
870
+ r = world.release(*FULL, "--yes", FAKE_NODE_UP=1, FAKE_NODE_RESTART=0.3)
871
+ assert r.returncode == 0, _all(r)
872
+ said, last, ahead = (world.state / "bump.log").read_text().splitlines()
873
+ assert said == f"{V} --build"
874
+ # after the pin commit, before the push
875
+ assert last == f"Pin s3dgraphy {V} in one place and its two copies, and count one more iteration of the server"
876
+ assert int(ahead) >= 1
877
+ assert "the container is restarting" in r.stdout # the retries while it restarts
878
+ assert f'the development node answers "s3dgraphy": "{V}" (server 1.6.0.dev2)' in r.stdout
879
+ assert r.stdout.index("▸ 10 · the development node") < r.stdout.index("▸ 11 · the push")
880
+ assert world.git(world.ws / "stratigraph-server", "rev-list", "--count", "@{u}..HEAD") == "0"
881
+ st = world.release("status", *FULL, FAKE_NODE_UP=1)
882
+ assert f' ✓ 10 done' in st.stdout and f'says "s3dgraphy": "{V}" (server 1.6.0.dev2)' in st.stdout
883
+ assert "every step is done" in st.stdout
884
+
885
+
886
+ def test_with_the_stack_down_it_says_so_and_goes_on(world):
887
+ r = world.release(*FULL, "--yes")
888
+ assert r.returncode == 0, _all(r)
889
+ assert ("em-dev-server is not running — the em-dev stack is down, nothing to rebuild — skipped"
890
+ in r.stdout)
891
+ assert not (world.state / "bump.log").exists()
892
+ assert "▸ 11 · the push" in r.stdout
893
+ assert world.git(world.ws / "stratigraph-server", "rev-list", "--count", "@{u}..HEAD") == "0"
894
+
895
+
896
+ def test_a_node_that_never_says_v_stops_before_the_push(world):
897
+ r = world.release(*FULL, "--yes", FAKE_NODE_UP=1, FAKE_NODE_STUCK=1, EM_RELEASE_WAIT_NODE=0.3)
898
+ assert r.returncode == 75, _all(r)
899
+ assert "still says '1.6.0.dev27', not '1.6.0.dev28'" in r.stderr
900
+ assert "docker logs em-dev-server" in r.stderr
901
+ assert world.git(world.ws / "stratigraph-server", "rev-list", "--count", "@{u}..HEAD") != "0" # not pushed
902
+
903
+
904
+ def test_declining_the_node_does_not_stop_the_row(world):
905
+ # the first confirmation, the five pin commits, then the node: n, then the push: y
906
+ r = world.release(*FULL, input="y\n" * 6 + "n\ny\n", FAKE_NODE_UP=1, EM_RELEASE_CONFIRM_SECONDS=0)
907
+ assert r.returncode == 0, _all(r)
908
+ assert f"not rebuilt. When ready: (stratigraph-server) ./bump-s3dgraphy.sh {V} --build" in r.stdout
909
+ assert not (world.state / "bump.log").exists()
910
+ assert world.git(world.ws / "stratigraph-server", "rev-list", "--count", "@{u}..HEAD") == "0"
File without changes