pyarchinit-mini 2.4.3__tar.gz → 2.4.5__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.
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/CHANGELOG.md +87 -0
- {pyarchinit_mini-2.4.3/pyarchinit_mini.egg-info → pyarchinit_mini-2.4.5}/PKG-INFO +1 -1
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/__init__.py +1 -1
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migrations/__init__.py +39 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_swimlane/swimlane_state.py +106 -4
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/harris_matrix.py +4 -1
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/inventario_materiali.py +3 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/us.py +4 -1
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/harris_creator_routes.py +31 -41
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/harris_creator/editor.html +70 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5/pyarchinit_mini.egg-info}/PKG-INFO +1 -1
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyproject.toml +1 -1
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/fixtures/_generate_harris_swimlane_synthetic.py +3 -1
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_harris_swimlane_routes_session_missing.py +2 -1
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/MANIFEST.in +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/README.md +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/babel.cfg +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/media_viewer_demo.db +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/pyarchinit_mini 2.db +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/pyarchinit_mini.db +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/pyarchinit_mini_sample.db +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/pyarchinit_tutorial.db +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/pyarchinit_tutorial_backup_20251030_093228.db +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/pyarchinit_tutorial_clean.db +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/pyarchinit_tutorial_video.db +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/pyarchinit_v18_demo.db +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/logo/logo_pyarchinit-mini.png +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/api/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/api/auth.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/api/dependencies.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/api/graphml.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/api/inventario.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/api/schemas.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/api/site.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/api/sync.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/api/us.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/export_import_cli.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/extended_matrix_import.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/graphml_cli.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/harris_import.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/harris_template.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/migrate.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/migrate_vocab.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/pyarchinit_import_export_cli.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli/sync_cli.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli_interface/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/cli_interface/cli_app.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/config/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/config/connection_manager.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/config/em_node_config_manager.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/config/em_node_types.yaml +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/concurrency_manager.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/connection.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/database_creator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/manager.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migration_scripts/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migration_scripts/add_file_path.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migration_scripts/add_i18n_columns.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migration_scripts/add_tipo_documento.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migration_scripts/change_us_area_to_text.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migration_scripts/change_us_area_to_text_simple.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migrations/_2026_05_node_uuid_backfill.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migrations/_2026_05_node_uuid_schema.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migrations/_2026_05_vocab_alignment.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migrations/backup.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/postgres_installer.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/schemas.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/utils.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/analytics_dialog.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/assets/logo.png +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/dialogs.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/excel_import_dialog.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/export_import_dialog.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/graphml_export_dialog.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/gui_app.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/harris_matrix_editor.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/i18n.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/icons.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/inventario_dialog_extended.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/main_window.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/media_manager_advanced.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/postgres_installer_dialog.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/pottery_dialog_extended.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/pottery_panel.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/pyarchinit_import_export_dialog.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/thesaurus_dialog.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/desktop_gui/us_dialog_extended.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/dto/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/dto/inventario_dto.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/dto/site_dto.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/dto/us_dto.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/exceptions.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/converter.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/dot_parser.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/em_palette.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/graphml_builder.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/graphml_exporter.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/pure_networkx_exporter.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/svg_resources.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/templates/EM_palette.graphml +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/x11_colors.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_converter/yed_template.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_io/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_io/reader.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_io/writer.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphml_io/yed_writer.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphproj/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphproj/auto_regen.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphproj/edge_registry.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphproj/exceptions.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphproj/filesystem.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphproj/ingest_plan.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphproj/ingestor.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphproj/paradata_store.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/graphproj/projector.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_matrix/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_matrix/enhanced_visualizer.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_matrix/matrix_generator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_matrix/matrix_visualizer.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_matrix/pyarchinit_visualizer.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_swimlane/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_swimlane/compound_layout.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_swimlane/exceptions.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_swimlane/period_sync_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_swimlane/row_provider.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/i18n/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/i18n/flask_babel_config.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/i18n/locale_manager.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/__main__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/blender_client.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/config.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/event_stream.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/graphml_parser.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/http_server.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/period_filter.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/prompts/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/prompts/base_prompt.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/prompts/period_visualization_prompt.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/prompts/stratigraphic_model_prompt.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/prompts/us_description_prompt.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/proxy_generator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/resources/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/resources/base_resource.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/resources/graphml_resource.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/resources/periods_resource.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/resources/relationships_resource.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/resources/sites_resource.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/resources/us_resource.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/server.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/base_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/batch_insert_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/build_3d_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/chatgpt_fetch_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/chatgpt_search_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/configure_em_nodes_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/create_database_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/create_harris_matrix_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/data_import_parser_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/data_management_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/database_manager_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/delete_data_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/export_harris_matrix_graphml_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/export_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/filter_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/generate_report_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/get_schema_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/import_excel_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/insert_data_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/manage_services_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/material_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/media_management_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/position_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/pyarchinit_sync_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/resolve_conflicts_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/service_management_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/thesaurus_management_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/update_data_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/upload_file_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/validate_relationship_format_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/validate_relationship_integrity_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/validate_stratigraphic_relationships_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/mcp_server/tools/validate_stratigraphy_tool.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/media_manager/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/media_manager/media_handler.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/ai_chat.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/app_setting.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/base.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/datazione.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/extended_matrix.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/media.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/pottery.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/site.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/thesaurus.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/tma.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/user.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/pdf_export/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/pdf_export/pdf_generator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/pdf_export/pdf_generator_backup.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/pdf_export/pyarchinit_finds_template.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/pdf_export/pyarchinit_inventory_template.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/pdf_export/usm_implementation.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/s3d_integration/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/s3d_integration/model_manager.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/s3d_integration/s3d_converter.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/auto_translate.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/configure_claude_desktop.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/create_admin_user.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/create_correct_stratigraphy_sample.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/create_italian_sample_database.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/create_sample_for_webapp.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/create_sample_with_50_us.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/generate_test_3d_model.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/load_italian_as_main.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/load_sample_as_main.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/migrate_relationships.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/populate_sample_data.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/populate_simple_data.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/setup_auth.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/setup_user_env.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/test_cascade_delete.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/test_relationship_fix.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/update_sample_relationships.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/update_urls_and_versions.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/scripts/verify_docs.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/ai_assistant_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/ai_chat_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/analytics_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/app_setting_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/backup_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/command_parser.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/datazione_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/export_import_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/extended_matrix_excel_parser.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/import_export_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/inventario_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/mcp_executor.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/media_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/periodizzazione_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/pottery_dto.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/pottery_pdf_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/pottery_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/relationship_sync_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/search_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/site_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/thesaurus_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/tma_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/us_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/services/user_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/stratigraph/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/stratigraph/bundle_creator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/stratigraph/bundle_manifest.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/stratigraph/bundle_validator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/stratigraph/connectivity_monitor.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/stratigraph/sync_orchestrator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/stratigraph/sync_queue.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/stratigraph/sync_state_machine.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/stratigraph/uuid_manager.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/translations/en/LC_MESSAGES/messages.mo +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/translations/en/LC_MESSAGES/messages.po +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/translations/it/LC_MESSAGES/messages.mo +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/translations/it/LC_MESSAGES/messages.po +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/translations/messages.pot +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/utils/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/utils/auth.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/utils/exceptions.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/utils/relationship_validator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/utils/stratigraphic_validator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/utils/tma_label_generator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/utils/validators.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/vocab/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/vocab/exceptions.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/vocab/i18n.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/vocab/loader.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/vocab/provider.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/vocab/translations/vocab_en.json +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/vocab/translations/vocab_it.json +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/vocab/types.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/app.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/auth_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/em_node_config_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/excel_import_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/graph_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/paradata_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/paradata_ui_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/pottery_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/pyarchinit_import_export_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/s3d_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/socketio_events.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/css/style.css +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/images/favicon.ico +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/images/logo.png +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/images/no-image.png +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/images/pyarchinit-mini-logo.png +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/js/OrbitControls.js +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/js/harris_creator_editor.js +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/js/stratigraphic_layout.js +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/js/three-d-viewer.js +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/js/three.min.js +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/js/universal_search.js +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.bin +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.gltf +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.mtl +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.obj +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/3d_builder/index.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/3d_viewer/viewer.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/admin/backups.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/admin/database.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/admin/database_connect.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/admin/database_info.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/admin/database_upload.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/admin/settings_ai.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/ai/assistant.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/analytics/dashboard.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/auth/login.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/auth/users.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/base.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/blender_viewer.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/components/language_switcher.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/dashboard.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/datazioni/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/docs/index.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/em_node_config/index.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/excel_import/index.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/export/export_import.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/graph_import_preview.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/graph_import_result.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/harris_creator/index.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/harris_matrix/graphml_export.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/harris_matrix/large_graph_message.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/harris_matrix/stratigraph_viewer.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/harris_matrix/view.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/harris_matrix/view_graphviz.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/harris_matrix/viewer_3d_integrated.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/inventario/form.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/inventario/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/media/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/media/upload.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/messaging/contacts.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/operators/directory.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/paradata/edit.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/paradata/index.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/paradata/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/pdf/pottery_sheet.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/periodizzazione/form.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/periodizzazione/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/periodizzazione/periods.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/pottery/detail.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/pottery/form.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/pottery/import_form.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/pottery/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/pyarchinit_import_export/index.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/search/results.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/sites/detail.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/sites/form.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/sites/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/sites/map.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/stats/targeted.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/thesaurus/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/tma/form.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/tma/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/us/form.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/us/list.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/templates/validation/report.html +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/test_prova_extended_matrix.graphml +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/three_d_builder_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.graphml +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.json +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/vocab_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_heriverse.json +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_stratigraphy.graphml +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_stratigraphy.json +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.json +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini.egg-info/SOURCES.txt +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini.egg-info/dependency_links.txt +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini.egg-info/entry_points.txt +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini.egg-info/not-zip-safe +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini.egg-info/requires.txt +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini.egg-info/top_level.txt +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/requirements.txt +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/setup.cfg +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/setup.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/conftest.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/e2e/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/e2e/test_web_vocab_full_flow.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/fixtures/_generate_baseline_graphml.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/fixtures/_generate_synthetic_db.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/fixtures/build_legacy_with_pottery.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_admin_ai_settings_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_admin_backup_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_auto_regen_on_save.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_full_sync_flow.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_graph_import_flow.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_graph_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_harris_matrix_post_cutover.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_harris_matrix_visual_parity.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_harris_swimlane_routes_create_row.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_harris_swimlane_routes_load.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_harris_swimlane_routes_save.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_migrate_vocab_cli.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_paradata_routes_authors.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_paradata_routes_other_types.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_paradata_ui.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_pottery_completion.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_pottery_excel_roundtrip.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_pottery_legacy_upgrade.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_pottery_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_spec2_coverage_gaps.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_vocab_routes.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_yed_export_route.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/integration/test_yed_writer_parity.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/__init__.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_app_setting_model.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_app_setting_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_auto_regen.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_backup_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_bundle.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_concurrency_columns.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_concurrency_manager.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_connectivity_monitor.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_database_utils.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_deprecated_writers_shim.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_em_palette_vocab_backed.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_graphml_io_reader.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_graphml_io_writer.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_graphproj_edge_registry.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_graphproj_exceptions.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_graphproj_filesystem.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_graphproj_ingestor_apply.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_graphproj_ingestor_preview.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_graphproj_projector.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_harris_swimlane_compound_layout.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_harris_swimlane_exceptions.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_harris_swimlane_period_sync.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_harris_swimlane_row_provider.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_harris_swimlane_state_load.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_harris_swimlane_state_save.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_ingest_plan.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_inventario_schema.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_migrations_backup.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_migrations_idempotent.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_optimistic_locking.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_paradata_store_authors.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_paradata_store_basic.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_paradata_store_other_types.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_pottery_dto.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_pottery_model.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_pottery_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_s3d_converter_vocab_backed.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_site_service.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_sync_api.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_sync_cli.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_sync_orchestrator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_sync_queue.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_sync_state_machine.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_us_dto_unita_tipo_validator.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_us_schema.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_uuid_manager.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_vocab_bootstrap_failures.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_vocab_exceptions.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_vocab_i18n.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_vocab_loader.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_vocab_provider.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_vocab_types.py +0 -0
- {pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/tests/unit/test_yed_writer.py +0 -0
|
@@ -1,3 +1,90 @@
|
|
|
1
|
+
## [2.4.5] - 2026-05-18
|
|
2
|
+
|
|
3
|
+
### Changed (IT)
|
|
4
|
+
- `/api/node-types` ora alimenta la sidebar del Harris Creator **direttamente
|
|
5
|
+
da VocabProvider** (s3dgraphy JSON catalogues), abbandonando il vecchio
|
|
6
|
+
YAML legacy. Conseguenza: i tipi USVs / USVn / USN / RSF / serSU /
|
|
7
|
+
serUSD / serUSVn / serUSVs / TSU / UL / BR / SE / USD compaiono
|
|
8
|
+
finalmente in sidebar. Aggiornare s3dgraphy aggiungerà automaticamente
|
|
9
|
+
nuovi tipi all'editor.
|
|
10
|
+
- Colore e forma di ogni voce vengono presi da `visual_style.fill_color`
|
|
11
|
+
e `visual_style.shape` di s3dgraphy (es. SF / VSF / RSF = octagon,
|
|
12
|
+
USVs = parallelogram, USVn = hexagon, USD = roundrectangle, BR = diamond).
|
|
13
|
+
|
|
14
|
+
### Fixed (IT)
|
|
15
|
+
- Pannello Properties ora si popola correttamente al click di un nodo US:
|
|
16
|
+
`SwimlaneState.load` aggiunge `us_number`, `description` (da
|
|
17
|
+
`d_stratigrafica`), `area`, `datazione`, `file_path` ai `data` Cytoscape
|
|
18
|
+
che il pannello legge.
|
|
19
|
+
- Ai US viene allegato anche `shape` / `border_color` / `border_style` da
|
|
20
|
+
VocabProvider — i nodi rendono con la simbologia EM appropriata, non più
|
|
21
|
+
rettangoli grigi.
|
|
22
|
+
|
|
23
|
+
### Added (IT)
|
|
24
|
+
- Toggle Hide/Show del pannello Properties (icona angle-double in alto a
|
|
25
|
+
destra del pannello): collassa a 36px e la scelta viene persistita in
|
|
26
|
+
`localStorage`. Cytoscape viene `fit()` dopo l'animazione per riempire
|
|
27
|
+
lo spazio guadagnato.
|
|
28
|
+
|
|
29
|
+
### Changed (EN)
|
|
30
|
+
- `/api/node-types` is now sourced from VocabProvider (s3dgraphy JSON
|
|
31
|
+
catalogues). Bumping s3dgraphy is enough to surface new types in the
|
|
32
|
+
sidebar.
|
|
33
|
+
- US nodes pick `shape`/`fill_color`/`border_color`/`border_style` from
|
|
34
|
+
the s3dgraphy `visual_style` block so EM symbology renders correctly.
|
|
35
|
+
|
|
36
|
+
### Fixed (EN)
|
|
37
|
+
- Properties panel populates again on node click — `SwimlaneState.load`
|
|
38
|
+
now attaches `us_number` / `description` / `area` / `datazione` /
|
|
39
|
+
`file_path` to the Cytoscape `data` payload.
|
|
40
|
+
|
|
41
|
+
### Added (EN)
|
|
42
|
+
- Properties panel Hide/Show toggle (collapses to a thin strip on the
|
|
43
|
+
right). Choice persisted in `localStorage`; Cytoscape re-fits the
|
|
44
|
+
viewport after the transition.
|
|
45
|
+
|
|
46
|
+
## [2.4.4] - 2026-05-18
|
|
47
|
+
|
|
48
|
+
### Fixed (IT)
|
|
49
|
+
- Nodi US dell'editor swimlane ora hanno `data.color` (risolto via
|
|
50
|
+
`VocabProvider.get_visual_style().fill_color`). Stop ai warning Cytoscape
|
|
51
|
+
"no mapping for property background-color with data field color".
|
|
52
|
+
- Edge stratigrafici deduplicati: `_build_edges` ora ignora le coppie
|
|
53
|
+
doppie `(source, target, edge_name)` e tratta gli inversi `overlies` /
|
|
54
|
+
`is_after` come la stessa relazione (un solo arco invece di due).
|
|
55
|
+
- Editor lancia un layout `dagre` dopo `cy.add()` + `cy.fit()`, così gli US
|
|
56
|
+
si distribuiscono dentro le row e gli archi diventano visibili.
|
|
57
|
+
|
|
58
|
+
### Added (IT)
|
|
59
|
+
- Modelli SQLAlchemy `US`, `InventarioMateriali`, `Periodizzazione` ora
|
|
60
|
+
definiscono la colonna `node_uuid = Column(String(36))`. Un DB nuovo
|
|
61
|
+
creato via `Base.metadata.create_all()` nasce con la colonna corretta.
|
|
62
|
+
- `DatabaseMigrations.migrate_all_tables()` chiama automaticamente le 3
|
|
63
|
+
migration di Spec 1 (`_2026_05_node_uuid_schema`, `_node_uuid_backfill`,
|
|
64
|
+
`_vocab_alignment`) idempotentemente. Conseguenza: i DB esistenti
|
|
65
|
+
(SQLite o PostgreSQL) vengono aggiornati al primo avvio del web —
|
|
66
|
+
nessun bisogno di lanciare manualmente `pyarchinit-mini-migrate-vocab`.
|
|
67
|
+
|
|
68
|
+
### Fixed (EN)
|
|
69
|
+
- US nodes in the swimlane editor now carry `data.color`, resolved through
|
|
70
|
+
`VocabProvider.get_visual_style().fill_color`. Eliminates Cytoscape
|
|
71
|
+
warnings about missing color mapping.
|
|
72
|
+
- Stratigraphic edges deduplicated: `_build_edges` ignores duplicate
|
|
73
|
+
`(source, target, edge_name)` triples and treats `overlies` / `is_after`
|
|
74
|
+
inverse pairs as the same edge (one arrow, not two).
|
|
75
|
+
- Editor runs a `dagre` layout after `cy.add()` plus a `cy.fit()` so US
|
|
76
|
+
children spread inside their swimlane row and edges become visible.
|
|
77
|
+
|
|
78
|
+
### Added (EN)
|
|
79
|
+
- SQLAlchemy models `US`, `InventarioMateriali`, `Periodizzazione` now
|
|
80
|
+
declare `node_uuid = Column(String(36))`. New DBs created via
|
|
81
|
+
`Base.metadata.create_all()` have the column from the start.
|
|
82
|
+
- `DatabaseMigrations.migrate_all_tables()` now invokes the 3 Spec 1
|
|
83
|
+
migrations (`node_uuid_schema`, `node_uuid_backfill`, `vocab_alignment`)
|
|
84
|
+
idempotently. Existing SQLite or PostgreSQL DBs get auto-upgraded on
|
|
85
|
+
the first web startup — no need to run `pyarchinit-mini-migrate-vocab`
|
|
86
|
+
by hand.
|
|
87
|
+
|
|
1
88
|
## [2.4.3] - 2026-05-18
|
|
2
89
|
|
|
3
90
|
### Fixed (IT)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyarchinit-mini
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.5
|
|
4
4
|
Summary: Lightweight archaeological data management system with REST API, Web UI, Desktop GUI, CLI, multi-user authentication, real-time collaboration, analytics dashboard, PyArchInit import/export, Heriverse/ATON export integration, and 3D CRUD viewer
|
|
5
5
|
Home-page: https://github.com/enzococca/pyarchinit-mini
|
|
6
6
|
Author: PyArchInit Team
|
{pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/database/migrations/__init__.py
RENAMED
|
@@ -803,6 +803,14 @@ class DatabaseMigrations:
|
|
|
803
803
|
except Exception as e:
|
|
804
804
|
logger.warning(f"TMA thesaurus trigger failed: {e}")
|
|
805
805
|
|
|
806
|
+
# Spec 1 (node_uuid + vocab alignment) — auto-applied so fresh
|
|
807
|
+
# installs and upgraded existing DBs both get the swimlane editor
|
|
808
|
+
# working without a manual `pyarchinit-mini-migrate-vocab` step.
|
|
809
|
+
try:
|
|
810
|
+
total_migrations += self._migrate_spec1_node_uuid_and_vocab()
|
|
811
|
+
except Exception as e:
|
|
812
|
+
logger.warning(f"Spec 1 node_uuid/vocab migration failed: {e}")
|
|
813
|
+
|
|
806
814
|
logger.info(f"All migrations completed. Total migrations applied: {total_migrations}")
|
|
807
815
|
return total_migrations
|
|
808
816
|
|
|
@@ -810,6 +818,37 @@ class DatabaseMigrations:
|
|
|
810
818
|
logger.error(f"Error during database migrations: {e}")
|
|
811
819
|
raise
|
|
812
820
|
|
|
821
|
+
def _migrate_spec1_node_uuid_and_vocab(self) -> int:
|
|
822
|
+
"""Apply Spec 1 migrations idempotently: node_uuid schema, backfill,
|
|
823
|
+
vocab alignment (USVA/USVB→USVs, USVC→USVn). Each underlying script
|
|
824
|
+
is a no-op when nothing needs changing, so this is safe to call on
|
|
825
|
+
every startup."""
|
|
826
|
+
import importlib
|
|
827
|
+
|
|
828
|
+
pkg = "pyarchinit_mini.database.migrations"
|
|
829
|
+
scripts = [
|
|
830
|
+
f"{pkg}._2026_05_node_uuid_schema",
|
|
831
|
+
f"{pkg}._2026_05_node_uuid_backfill",
|
|
832
|
+
f"{pkg}._2026_05_vocab_alignment",
|
|
833
|
+
]
|
|
834
|
+
url = str(self.connection.engine.url)
|
|
835
|
+
applied = 0
|
|
836
|
+
for mod_path in scripts:
|
|
837
|
+
try:
|
|
838
|
+
mod = importlib.import_module(mod_path)
|
|
839
|
+
report = mod.run(url, dry_run=False)
|
|
840
|
+
status = getattr(report, "status", "ok")
|
|
841
|
+
if status == "ok":
|
|
842
|
+
rows = getattr(report, "rows_updated", None)
|
|
843
|
+
tables = getattr(report, "tables_changed", None)
|
|
844
|
+
mappings = getattr(report, "mappings", None)
|
|
845
|
+
if rows or tables or mappings:
|
|
846
|
+
applied += 1
|
|
847
|
+
logger.info(f"{mod_path}: {tables or rows or mappings}")
|
|
848
|
+
except Exception as e:
|
|
849
|
+
logger.warning(f"{mod_path} failed: {e}")
|
|
850
|
+
return applied
|
|
851
|
+
|
|
813
852
|
def get_table_info(self, table_name: str) -> Dict[str, Any]:
|
|
814
853
|
"""Get information about a table structure"""
|
|
815
854
|
try:
|
{pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/harris_swimlane/swimlane_state.py
RENAMED
|
@@ -52,10 +52,64 @@ class SwimlaneState:
|
|
|
52
52
|
provider = RowProvider(session, site)
|
|
53
53
|
rows = provider.list_rows()
|
|
54
54
|
|
|
55
|
+
# Resolve unit_type → visual_style via VocabProvider once per request,
|
|
56
|
+
# cached. The editor's Cytoscape style uses `data(color)` and
|
|
57
|
+
# `data(shape)`; if either is missing the node renders grey rectangles
|
|
58
|
+
# and Cytoscape logs a warning per node.
|
|
59
|
+
_SHAPE_TO_CYTOSCAPE = {
|
|
60
|
+
"rounded_rectangle": "roundrectangle",
|
|
61
|
+
"parallelogram": "rhomboid",
|
|
62
|
+
"trapezium": "triangle",
|
|
63
|
+
"trapezium2": "vee",
|
|
64
|
+
# Names that are already valid Cytoscape shapes pass through.
|
|
65
|
+
}
|
|
66
|
+
try:
|
|
67
|
+
from pyarchinit_mini.vocab.provider import VocabProvider
|
|
68
|
+
_vocab = VocabProvider.instance()
|
|
69
|
+
_style_cache: dict[str, dict] = {}
|
|
70
|
+
|
|
71
|
+
def _style_for(ut: str) -> dict:
|
|
72
|
+
if ut in _style_cache:
|
|
73
|
+
return _style_cache[ut]
|
|
74
|
+
try:
|
|
75
|
+
vs = _vocab.get_visual_style(ut)
|
|
76
|
+
raw_shape = (
|
|
77
|
+
vs.get("shape") if isinstance(vs, dict)
|
|
78
|
+
else getattr(vs, "shape", "rectangle")
|
|
79
|
+
)
|
|
80
|
+
fill = (
|
|
81
|
+
vs.get("fill_color") if isinstance(vs, dict)
|
|
82
|
+
else getattr(vs, "fill_color", None)
|
|
83
|
+
) or "#CCCCCC"
|
|
84
|
+
border = (
|
|
85
|
+
vs.get("border_color") if isinstance(vs, dict)
|
|
86
|
+
else getattr(vs, "border_color", None)
|
|
87
|
+
) or "#333333"
|
|
88
|
+
border_style = (
|
|
89
|
+
vs.get("border_style") if isinstance(vs, dict)
|
|
90
|
+
else getattr(vs, "border_style", None)
|
|
91
|
+
) or "solid"
|
|
92
|
+
out = {
|
|
93
|
+
"color": fill,
|
|
94
|
+
"shape": _SHAPE_TO_CYTOSCAPE.get(raw_shape, raw_shape),
|
|
95
|
+
"border_color": border,
|
|
96
|
+
"border_style": border_style,
|
|
97
|
+
}
|
|
98
|
+
except Exception:
|
|
99
|
+
out = {"color": "#CCCCCC", "shape": "rectangle",
|
|
100
|
+
"border_color": "#333333", "border_style": "solid"}
|
|
101
|
+
_style_cache[ut] = out
|
|
102
|
+
return out
|
|
103
|
+
except Exception:
|
|
104
|
+
def _style_for(ut: str) -> dict:
|
|
105
|
+
return {"color": "#CCCCCC", "shape": "rectangle",
|
|
106
|
+
"border_color": "#333333", "border_style": "solid"}
|
|
107
|
+
|
|
55
108
|
# Load US records for site
|
|
56
109
|
us_rows = session.execute(text(
|
|
57
110
|
"SELECT id_us, sito, area, us, unita_tipo, rapporti, node_uuid, "
|
|
58
|
-
"periodo_iniziale, fase_iniziale "
|
|
111
|
+
"periodo_iniziale, fase_iniziale, "
|
|
112
|
+
"d_stratigrafica, datazione, file_path "
|
|
59
113
|
"FROM us_table WHERE sito = :sito ORDER BY id_us"
|
|
60
114
|
), {"sito": site}).fetchall()
|
|
61
115
|
|
|
@@ -83,16 +137,30 @@ class SwimlaneState:
|
|
|
83
137
|
|
|
84
138
|
pos = initial_node_position(_RowLike(), idx)
|
|
85
139
|
|
|
140
|
+
style = _style_for(unita_tipo)
|
|
86
141
|
nodes.append(CytoscapeElement(
|
|
87
142
|
data={
|
|
88
143
|
"id": node_id,
|
|
89
144
|
"label": f"{unita_tipo}{us_num}",
|
|
90
145
|
"parent": parent_row_id,
|
|
91
146
|
"unit_type": unita_tipo,
|
|
92
|
-
|
|
93
|
-
"
|
|
147
|
+
# Visual fields — read by harris_creator_editor.js Cytoscape style
|
|
148
|
+
"color": style["color"],
|
|
149
|
+
"shape": style["shape"],
|
|
150
|
+
"border_color": style["border_color"],
|
|
151
|
+
"border_style": style["border_style"],
|
|
152
|
+
# Identity + provenance
|
|
94
153
|
"us": us_num,
|
|
154
|
+
"us_number": us_num, # Properties panel reads this name
|
|
95
155
|
"node_uuid": r[6],
|
|
156
|
+
# Temporal
|
|
157
|
+
"period": periodo,
|
|
158
|
+
"phase": fase,
|
|
159
|
+
# Descriptive fields the Properties panel populates
|
|
160
|
+
"description": r[9] or "", # d_stratigrafica
|
|
161
|
+
"area": (r[2] or "") if r[2] is not None else "",
|
|
162
|
+
"datazione": r[10] or "",
|
|
163
|
+
"file_path": r[11] or "",
|
|
96
164
|
},
|
|
97
165
|
position=pos,
|
|
98
166
|
))
|
|
@@ -124,15 +192,33 @@ class SwimlaneState:
|
|
|
124
192
|
|
|
125
193
|
@staticmethod
|
|
126
194
|
def _build_edges(us_rows, us_num_to_node_id: dict) -> list[CytoscapeElement]:
|
|
127
|
-
"""Parse rapporti for each US via EdgeRegistry
|
|
195
|
+
"""Parse rapporti for each US via EdgeRegistry, deduplicating canonical
|
|
196
|
+
triples ``(source, target, edge_name)``.
|
|
197
|
+
|
|
198
|
+
pyarchinit stores stratigraphic relationships from both sides
|
|
199
|
+
(``A copre B`` on row A AND ``B coperto da A`` on row B). Both tokens
|
|
200
|
+
resolve to the same canonical edge ``A overlies B`` — without
|
|
201
|
+
deduplication the editor renders the same arrow twice.
|
|
202
|
+
|
|
203
|
+
Symmetric edge types (``has_same_time``) are deduped on the
|
|
204
|
+
unordered pair so the bidirectional view doesn't show 2 lines.
|
|
205
|
+
"""
|
|
128
206
|
try:
|
|
129
207
|
from pyarchinit_mini.graphproj.edge_registry import EdgeRegistry
|
|
130
208
|
registry = EdgeRegistry()
|
|
131
209
|
except Exception:
|
|
132
210
|
return []
|
|
133
211
|
|
|
212
|
+
# Edges where direction is meaningless (twins).
|
|
213
|
+
SYMMETRIC = {"has_same_time"}
|
|
214
|
+
# Edges that are inverses of each other (A overlies B ≡ B is_after A
|
|
215
|
+
# in stratigraphic Harris semantics). When pyarchinit stores both
|
|
216
|
+
# sides on different US rows, the editor must show one arrow, not two.
|
|
217
|
+
INVERSE_PAIRS = {"overlies": "is_after", "is_after": "overlies"}
|
|
218
|
+
|
|
134
219
|
edges: list[CytoscapeElement] = []
|
|
135
220
|
edge_counter = 0
|
|
221
|
+
seen: set[tuple] = set()
|
|
136
222
|
|
|
137
223
|
for r in us_rows:
|
|
138
224
|
us_num = r[3]
|
|
@@ -157,6 +243,22 @@ class SwimlaneState:
|
|
|
157
243
|
target_node_id = us_num_to_node_id.get(target_int)
|
|
158
244
|
if target_node_id is None:
|
|
159
245
|
continue
|
|
246
|
+
|
|
247
|
+
if edge_name in SYMMETRIC:
|
|
248
|
+
key = (edge_name, tuple(sorted((source_node_id, target_node_id))))
|
|
249
|
+
else:
|
|
250
|
+
key = (edge_name, source_node_id, target_node_id)
|
|
251
|
+
if key in seen:
|
|
252
|
+
continue
|
|
253
|
+
# Check the inverse pair (overlies vs is_after) under the same
|
|
254
|
+
# source/target pair — they represent the same edge.
|
|
255
|
+
inverse_name = INVERSE_PAIRS.get(edge_name)
|
|
256
|
+
if inverse_name is not None:
|
|
257
|
+
inverse_key = (inverse_name, target_node_id, source_node_id)
|
|
258
|
+
if inverse_key in seen:
|
|
259
|
+
continue
|
|
260
|
+
seen.add(key)
|
|
261
|
+
|
|
160
262
|
edge_counter += 1
|
|
161
263
|
edges.append(CytoscapeElement(data={
|
|
162
264
|
"id": f"e{edge_counter}",
|
|
@@ -92,7 +92,10 @@ class Periodizzazione(BaseModel):
|
|
|
92
92
|
# Confidence and notes
|
|
93
93
|
affidabilita = Column(String(50)) # 'alta', 'media', 'bassa'
|
|
94
94
|
note = Column(Text)
|
|
95
|
-
|
|
95
|
+
|
|
96
|
+
# Spec 1: stable node identity for s3dgraphy/EM graph round-trip
|
|
97
|
+
node_uuid = Column(String(36))
|
|
98
|
+
|
|
96
99
|
# Relationships
|
|
97
100
|
site_ref = relationship("Site", foreign_keys=[sito])
|
|
98
101
|
initial_period = relationship("Period", foreign_keys=[period_id_initial])
|
{pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/pyarchinit_mini/models/inventario_materiali.py
RENAMED
|
@@ -97,6 +97,9 @@ class InventarioMateriali(BaseModel):
|
|
|
97
97
|
photo_id = Column(Text)
|
|
98
98
|
drawing_id = Column(Text)
|
|
99
99
|
|
|
100
|
+
# Spec 1: stable node identity for s3dgraphy/EM graph round-trip
|
|
101
|
+
node_uuid = Column(String(36))
|
|
102
|
+
|
|
100
103
|
# Relationships
|
|
101
104
|
site_ref = relationship("Site", foreign_keys=[sito],
|
|
102
105
|
primaryjoin="InventarioMateriali.sito == Site.sito")
|
|
@@ -196,8 +196,11 @@ class US(BaseModel):
|
|
|
196
196
|
rapporti2 = Column(Text)
|
|
197
197
|
doc_usv = Column(Text)
|
|
198
198
|
|
|
199
|
+
# Spec 1: stable node identity for s3dgraphy/EM graph round-trip
|
|
200
|
+
node_uuid = Column(String(36))
|
|
201
|
+
|
|
199
202
|
# Relationships
|
|
200
|
-
site_ref = relationship("Site", foreign_keys=[sito],
|
|
203
|
+
site_ref = relationship("Site", foreign_keys=[sito],
|
|
201
204
|
primaryjoin="US.sito == Site.sito")
|
|
202
205
|
|
|
203
206
|
def __repr__(self):
|
|
@@ -481,17 +481,20 @@ def export_matrix(format):
|
|
|
481
481
|
|
|
482
482
|
@harris_creator_bp.route('/api/node-types')
|
|
483
483
|
def get_node_types():
|
|
484
|
+
"""List Extended Matrix node types from VocabProvider (s3dgraphy JSON
|
|
485
|
+
catalogues). The previous implementation read a legacy YAML config and
|
|
486
|
+
so missed every node type added in s3dgraphy >= 0.1.42 (USVs/USVn/USN/
|
|
487
|
+
RSF/serSU/serUSD/serUSVn/serUSVs/TSU/UL/BR/SE...). With this refactor,
|
|
488
|
+
upgrading s3dgraphy is enough to make new types appear in the editor.
|
|
484
489
|
"""
|
|
485
|
-
|
|
486
|
-
Now dynamically loaded from YAML configuration
|
|
487
|
-
"""
|
|
488
|
-
# Map GraphML/yEd shapes to Cytoscape.js compatible shapes
|
|
490
|
+
# Map s3dgraphy yEd-style shapes to Cytoscape.js shapes.
|
|
489
491
|
SHAPE_MAP = {
|
|
490
|
-
'note': 'roundrectangle',
|
|
491
|
-
'trapezium': 'triangle',
|
|
492
|
-
'trapezium2': 'vee',
|
|
493
|
-
'parallelogram': 'rhomboid',
|
|
494
|
-
|
|
492
|
+
'note': 'roundrectangle',
|
|
493
|
+
'trapezium': 'triangle',
|
|
494
|
+
'trapezium2': 'vee',
|
|
495
|
+
'parallelogram': 'rhomboid',
|
|
496
|
+
'rounded_rectangle': 'roundrectangle',
|
|
497
|
+
# Cytoscape-native shapes pass through.
|
|
495
498
|
'rectangle': 'rectangle',
|
|
496
499
|
'roundrectangle': 'roundrectangle',
|
|
497
500
|
'ellipse': 'ellipse',
|
|
@@ -503,49 +506,36 @@ def get_node_types():
|
|
|
503
506
|
'star': 'star',
|
|
504
507
|
'diamond': 'diamond',
|
|
505
508
|
'vee': 'vee',
|
|
506
|
-
'rhomboid': 'rhomboid'
|
|
509
|
+
'rhomboid': 'rhomboid',
|
|
507
510
|
}
|
|
508
511
|
|
|
509
512
|
try:
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
# Default colors for visual editor (can be customized in config)
|
|
514
|
-
default_colors = {
|
|
515
|
-
'US': '#90CAF9', 'USM': '#FFAB91', 'USVA': '#CE93D8',
|
|
516
|
-
'USVB': '#E1BEE7', 'USVC': '#F48FB1', 'TU': '#80CBC4',
|
|
517
|
-
'USD': '#A5D6A7', 'SF': '#FFD54F', 'VSF': '#FFE082',
|
|
518
|
-
'CON': '#BCAAA4', 'DOC': '#B0BEC5', 'Extractor': '#EF9A9A',
|
|
519
|
-
'Combinar': '#9FA8DA', 'property': '#CFD8DC'
|
|
520
|
-
}
|
|
513
|
+
from pyarchinit_mini.vocab.provider import VocabProvider
|
|
514
|
+
provider = VocabProvider.instance()
|
|
515
|
+
unit_types = provider.get_unit_types()
|
|
521
516
|
|
|
522
517
|
node_types = []
|
|
523
|
-
for
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
#
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
# Get shape from config and map to Cytoscape-compatible shape
|
|
532
|
-
config_shape = visual.get('shape', 'rectangle')
|
|
533
|
-
cytoscape_shape = SHAPE_MAP.get(config_shape, 'rectangle')
|
|
518
|
+
for ut in unit_types:
|
|
519
|
+
style = getattr(ut, "visual_style", None) or {}
|
|
520
|
+
shape = style.get("shape", "rectangle") if isinstance(style, dict) else getattr(style, "shape", "rectangle")
|
|
521
|
+
fill = style.get("fill_color", "#CCCCCC") if isinstance(style, dict) else getattr(style, "fill_color", "#CCCCCC")
|
|
522
|
+
description = getattr(ut, "description", "") or ""
|
|
523
|
+
label = ut.abbreviation
|
|
524
|
+
if description:
|
|
525
|
+
label = f"{ut.abbreviation} - {description[:80]}"
|
|
534
526
|
|
|
535
527
|
node_types.append({
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
528
|
+
"value": ut.abbreviation,
|
|
529
|
+
"label": label,
|
|
530
|
+
"color": fill,
|
|
531
|
+
"shape": SHAPE_MAP.get(shape, "rectangle"),
|
|
532
|
+
"family": getattr(ut, "family", None),
|
|
541
533
|
})
|
|
542
|
-
|
|
543
534
|
return jsonify(node_types)
|
|
544
|
-
|
|
545
535
|
except Exception as e:
|
|
546
|
-
# Fallback to minimal list if config fails
|
|
547
536
|
return jsonify([
|
|
548
|
-
{
|
|
537
|
+
{"value": "US", "label": "US - Standard Stratigraphic Unit",
|
|
538
|
+
"color": "#F0F0F0", "shape": "rectangle"}
|
|
549
539
|
])
|
|
550
540
|
|
|
551
541
|
|
|
@@ -63,6 +63,26 @@
|
|
|
63
63
|
padding: 15px;
|
|
64
64
|
width: 300px;
|
|
65
65
|
overflow-y: auto;
|
|
66
|
+
transition: width 0.2s ease, padding 0.2s ease;
|
|
67
|
+
}
|
|
68
|
+
#properties-panel.collapsed {
|
|
69
|
+
width: 36px;
|
|
70
|
+
padding: 6px 4px;
|
|
71
|
+
overflow: hidden;
|
|
72
|
+
}
|
|
73
|
+
#properties-panel.collapsed > *:not(.props-toggle-bar) {
|
|
74
|
+
display: none !important;
|
|
75
|
+
}
|
|
76
|
+
.props-toggle-bar {
|
|
77
|
+
display: flex;
|
|
78
|
+
justify-content: flex-end;
|
|
79
|
+
margin-bottom: 8px;
|
|
80
|
+
}
|
|
81
|
+
#properties-panel.collapsed .props-toggle-bar {
|
|
82
|
+
justify-content: center;
|
|
83
|
+
}
|
|
84
|
+
#properties-panel.collapsed .props-toggle-bar button .toggle-label {
|
|
85
|
+
display: none;
|
|
66
86
|
}
|
|
67
87
|
|
|
68
88
|
.property-field {
|
|
@@ -280,6 +300,12 @@
|
|
|
280
300
|
|
|
281
301
|
<!-- Right Properties Panel -->
|
|
282
302
|
<div id="properties-panel">
|
|
303
|
+
<div class="props-toggle-bar">
|
|
304
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="togglePropertiesPanel()" title="Hide/show Properties panel">
|
|
305
|
+
<i class="fas fa-angle-double-right"></i>
|
|
306
|
+
<span class="toggle-label">Hide</span>
|
|
307
|
+
</button>
|
|
308
|
+
</div>
|
|
283
309
|
<h6 class="mb-3"><i class="fas fa-cog"></i> Properties</h6>
|
|
284
310
|
|
|
285
311
|
<div id="no-selection" class="text-center text-muted py-5">
|
|
@@ -442,6 +468,31 @@
|
|
|
442
468
|
// work even if loadSwimlaneState() never succeeds (e.g. DB migration pending).
|
|
443
469
|
window._currentSite = (document.getElementById('site-name') || {}).value || null;
|
|
444
470
|
|
|
471
|
+
// Properties panel collapse/expand (persists choice in localStorage).
|
|
472
|
+
function togglePropertiesPanel() {
|
|
473
|
+
const panel = document.getElementById('properties-panel');
|
|
474
|
+
if (!panel) return;
|
|
475
|
+
const collapsed = panel.classList.toggle('collapsed');
|
|
476
|
+
try { localStorage.setItem('harris_props_collapsed', collapsed ? '1' : '0'); } catch (e) {}
|
|
477
|
+
const icon = panel.querySelector('.props-toggle-bar button i');
|
|
478
|
+
if (icon) {
|
|
479
|
+
icon.classList.toggle('fa-angle-double-right', !collapsed);
|
|
480
|
+
icon.classList.toggle('fa-angle-double-left', collapsed);
|
|
481
|
+
}
|
|
482
|
+
const lbl = panel.querySelector('.props-toggle-bar .toggle-label');
|
|
483
|
+
if (lbl) lbl.textContent = collapsed ? 'Show' : 'Hide';
|
|
484
|
+
if (typeof cy !== 'undefined') {
|
|
485
|
+
setTimeout(() => { try { cy.resize(); cy.fit(undefined, 30); } catch(e){} }, 220);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
window.addEventListener('DOMContentLoaded', () => {
|
|
489
|
+
try {
|
|
490
|
+
if (localStorage.getItem('harris_props_collapsed') === '1') {
|
|
491
|
+
togglePropertiesPanel();
|
|
492
|
+
}
|
|
493
|
+
} catch (e) {}
|
|
494
|
+
});
|
|
495
|
+
|
|
445
496
|
async function loadSwimlaneState(site) {
|
|
446
497
|
try {
|
|
447
498
|
const r = await fetch(`/harris-creator/api/load/${encodeURIComponent(site)}`);
|
|
@@ -519,6 +570,25 @@ function renderSwimlaneState(state) {
|
|
|
519
570
|
});
|
|
520
571
|
});
|
|
521
572
|
|
|
573
|
+
// Run dagre layout inside each swimlane row so US nodes spread out
|
|
574
|
+
// horizontally and stratigraphic edges become visible. Without a layout
|
|
575
|
+
// pass, all US children of a row get stacked at the row's centroid and
|
|
576
|
+
// the edges collapse into invisible zero-length segments.
|
|
577
|
+
try {
|
|
578
|
+
cy.layout({
|
|
579
|
+
name: 'dagre',
|
|
580
|
+
rankDir: 'LR',
|
|
581
|
+
nodeSep: 50,
|
|
582
|
+
rankSep: 80,
|
|
583
|
+
fit: false,
|
|
584
|
+
}).run();
|
|
585
|
+
} catch (e) {
|
|
586
|
+
console.warn('dagre layout failed, falling back to grid:', e);
|
|
587
|
+
cy.layout({name: 'grid'}).run();
|
|
588
|
+
}
|
|
589
|
+
// Fit viewport so the user actually sees the rows + nodes + edges.
|
|
590
|
+
cy.fit(undefined, 30);
|
|
591
|
+
|
|
522
592
|
// Save state references for later use
|
|
523
593
|
window._currentSite = state.site;
|
|
524
594
|
window._pendingChanges = state.pending_changes || {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyarchinit-mini
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.5
|
|
4
4
|
Summary: Lightweight archaeological data management system with REST API, Web UI, Desktop GUI, CLI, multi-user authentication, real-time collaboration, analytics dashboard, PyArchInit import/export, Heriverse/ATON export integration, and 3D CRUD viewer
|
|
5
5
|
Home-page: https://github.com/enzococca/pyarchinit-mini
|
|
6
6
|
Author: PyArchInit Team
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyarchinit-mini"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.5"
|
|
8
8
|
description = "Lightweight archaeological data management system with REST API, Web UI, Desktop GUI, CLI, multi-user authentication, real-time collaboration, analytics dashboard, PyArchInit import/export, Heriverse/ATON export integration, and 3D CRUD viewer"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "GPL-2.0"}
|
|
@@ -34,6 +34,7 @@ CREATE TABLE us_table (
|
|
|
34
34
|
id_us INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
35
35
|
sito TEXT, area TEXT, us INTEGER, unita_tipo TEXT,
|
|
36
36
|
d_stratigrafica TEXT, d_interpretativa TEXT,
|
|
37
|
+
datazione TEXT, file_path TEXT,
|
|
37
38
|
rapporti TEXT, node_uuid TEXT,
|
|
38
39
|
periodo_iniziale TEXT, fase_iniziale TEXT,
|
|
39
40
|
periodo_finale TEXT, fase_finale TEXT
|
|
@@ -62,11 +63,12 @@ for i in range(30):
|
|
|
62
63
|
us_records.append(
|
|
63
64
|
("Volterra", "A", 1000 + i, "US",
|
|
64
65
|
f"strat {i}", f"interp {i}",
|
|
66
|
+
f"100..200", None,
|
|
65
67
|
rapporti, f"uuid-{i:03d}",
|
|
66
68
|
period, phase, None, None)
|
|
67
69
|
)
|
|
68
70
|
c.executemany(
|
|
69
|
-
"INSERT INTO us_table (sito, area, us, unita_tipo, d_stratigrafica, d_interpretativa, rapporti, node_uuid, periodo_iniziale, fase_iniziale, periodo_finale, fase_finale) VALUES (
|
|
71
|
+
"INSERT INTO us_table (sito, area, us, unita_tipo, d_stratigrafica, d_interpretativa, datazione, file_path, rapporti, node_uuid, periodo_iniziale, fase_iniziale, periodo_finale, fase_finale) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
|
|
70
72
|
us_records,
|
|
71
73
|
)
|
|
72
74
|
|
|
@@ -32,7 +32,8 @@ def client_no_session(tmp_path, monkeypatch):
|
|
|
32
32
|
);
|
|
33
33
|
CREATE TABLE us_table (
|
|
34
34
|
id_us INTEGER PRIMARY KEY,
|
|
35
|
-
sito TEXT, us INTEGER, unita_tipo TEXT,
|
|
35
|
+
sito TEXT, area TEXT, us INTEGER, unita_tipo TEXT,
|
|
36
|
+
d_stratigrafica TEXT, datazione TEXT, file_path TEXT,
|
|
36
37
|
rapporti TEXT, node_uuid TEXT,
|
|
37
38
|
periodo_iniziale TEXT, fase_iniziale TEXT
|
|
38
39
|
);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_mini-2.4.3 → pyarchinit_mini-2.4.5}/data/pyarchinit_tutorial_backup_20251030_093228.db
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|