pyarchinit-mini 2.4.4__tar.gz → 2.4.6__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.4 → pyarchinit_mini-2.4.6}/CHANGELOG.md +69 -0
- {pyarchinit_mini-2.4.4/pyarchinit_mini.egg-info → pyarchinit_mini-2.4.6}/PKG-INFO +1 -1
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/__init__.py +1 -1
- pyarchinit_mini-2.4.6/pyarchinit_mini/database/migrations/_2026_05_period_table_schema.py +146 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migrations/__init__.py +1 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_swimlane/swimlane_state.py +63 -17
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/harris_matrix.py +26 -8
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/harris_creator_routes.py +31 -41
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/harris_creator/editor.html +51 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6/pyarchinit_mini.egg-info}/PKG-INFO +1 -1
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini.egg-info/SOURCES.txt +1 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyproject.toml +1 -1
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/fixtures/_generate_harris_swimlane_synthetic.py +3 -1
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_harris_swimlane_routes_session_missing.py +2 -1
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/MANIFEST.in +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/README.md +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/babel.cfg +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/data/media_viewer_demo.db +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/data/pyarchinit_mini 2.db +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/data/pyarchinit_mini.db +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/data/pyarchinit_mini_sample.db +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/data/pyarchinit_tutorial.db +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/data/pyarchinit_tutorial_backup_20251030_093228.db +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/data/pyarchinit_tutorial_clean.db +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/data/pyarchinit_tutorial_video.db +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/data/pyarchinit_v18_demo.db +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/logo/logo_pyarchinit-mini.png +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/api/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/api/auth.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/api/dependencies.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/api/graphml.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/api/inventario.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/api/schemas.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/api/site.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/api/sync.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/api/us.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/export_import_cli.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/extended_matrix_import.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/graphml_cli.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/harris_import.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/harris_template.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/migrate.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/migrate_vocab.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/pyarchinit_import_export_cli.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli/sync_cli.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli_interface/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/cli_interface/cli_app.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/config/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/config/connection_manager.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/config/em_node_config_manager.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/config/em_node_types.yaml +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/concurrency_manager.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/connection.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/database_creator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/manager.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migration_scripts/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migration_scripts/add_file_path.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migration_scripts/add_i18n_columns.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migration_scripts/add_tipo_documento.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migration_scripts/change_us_area_to_text.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migration_scripts/change_us_area_to_text_simple.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migrations/_2026_05_node_uuid_backfill.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migrations/_2026_05_node_uuid_schema.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migrations/_2026_05_vocab_alignment.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/migrations/backup.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/postgres_installer.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/schemas.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/database/utils.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/analytics_dialog.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/assets/logo.png +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/dialogs.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/excel_import_dialog.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/export_import_dialog.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/graphml_export_dialog.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/gui_app.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/harris_matrix_editor.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/i18n.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/icons.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/inventario_dialog_extended.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/main_window.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/media_manager_advanced.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/postgres_installer_dialog.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/pottery_dialog_extended.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/pottery_panel.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/pyarchinit_import_export_dialog.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/thesaurus_dialog.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/desktop_gui/us_dialog_extended.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/dto/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/dto/inventario_dto.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/dto/site_dto.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/dto/us_dto.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/exceptions.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/converter.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/dot_parser.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/em_palette.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/graphml_builder.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/graphml_exporter.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/pure_networkx_exporter.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/svg_resources.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/templates/EM_palette.graphml +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/x11_colors.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_converter/yed_template.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_io/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_io/reader.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_io/writer.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphml_io/yed_writer.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphproj/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphproj/auto_regen.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphproj/edge_registry.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphproj/exceptions.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphproj/filesystem.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphproj/ingest_plan.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphproj/ingestor.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphproj/paradata_store.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/graphproj/projector.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_matrix/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_matrix/enhanced_visualizer.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_matrix/matrix_generator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_matrix/matrix_visualizer.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_matrix/pyarchinit_visualizer.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_swimlane/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_swimlane/compound_layout.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_swimlane/exceptions.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_swimlane/period_sync_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_swimlane/row_provider.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/i18n/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/i18n/flask_babel_config.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/i18n/locale_manager.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/__main__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/blender_client.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/config.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/event_stream.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/graphml_parser.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/http_server.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/period_filter.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/prompts/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/prompts/base_prompt.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/prompts/period_visualization_prompt.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/prompts/stratigraphic_model_prompt.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/prompts/us_description_prompt.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/proxy_generator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/resources/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/resources/base_resource.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/resources/graphml_resource.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/resources/periods_resource.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/resources/relationships_resource.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/resources/sites_resource.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/resources/us_resource.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/server.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/base_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/batch_insert_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/build_3d_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/chatgpt_fetch_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/chatgpt_search_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/configure_em_nodes_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/create_database_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/create_harris_matrix_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/data_import_parser_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/data_management_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/database_manager_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/delete_data_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/export_harris_matrix_graphml_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/export_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/filter_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/generate_report_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/get_schema_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/import_excel_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/insert_data_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/manage_services_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/material_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/media_management_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/position_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/pyarchinit_sync_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/resolve_conflicts_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/service_management_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/thesaurus_management_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/update_data_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/upload_file_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/validate_relationship_format_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/validate_relationship_integrity_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/validate_stratigraphic_relationships_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/mcp_server/tools/validate_stratigraphy_tool.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/media_manager/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/media_manager/media_handler.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/ai_chat.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/app_setting.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/base.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/datazione.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/extended_matrix.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/inventario_materiali.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/media.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/pottery.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/site.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/thesaurus.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/tma.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/us.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/models/user.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/pdf_export/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/pdf_export/pdf_generator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/pdf_export/pdf_generator_backup.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/pdf_export/pyarchinit_finds_template.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/pdf_export/pyarchinit_inventory_template.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/pdf_export/usm_implementation.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/s3d_integration/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/s3d_integration/model_manager.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/s3d_integration/s3d_converter.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/auto_translate.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/configure_claude_desktop.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/create_admin_user.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/create_correct_stratigraphy_sample.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/create_italian_sample_database.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/create_sample_for_webapp.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/create_sample_with_50_us.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/generate_test_3d_model.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/load_italian_as_main.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/load_sample_as_main.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/migrate_relationships.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/populate_sample_data.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/populate_simple_data.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/setup_auth.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/setup_user_env.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/test_cascade_delete.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/test_relationship_fix.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/update_sample_relationships.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/update_urls_and_versions.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/scripts/verify_docs.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/ai_assistant_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/ai_chat_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/analytics_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/app_setting_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/backup_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/command_parser.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/datazione_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/export_import_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/extended_matrix_excel_parser.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/import_export_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/inventario_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/mcp_executor.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/media_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/periodizzazione_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/pottery_dto.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/pottery_pdf_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/pottery_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/relationship_sync_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/search_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/site_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/thesaurus_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/tma_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/us_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/services/user_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/stratigraph/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/stratigraph/bundle_creator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/stratigraph/bundle_manifest.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/stratigraph/bundle_validator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/stratigraph/connectivity_monitor.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/stratigraph/sync_orchestrator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/stratigraph/sync_queue.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/stratigraph/sync_state_machine.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/stratigraph/uuid_manager.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/translations/en/LC_MESSAGES/messages.mo +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/translations/en/LC_MESSAGES/messages.po +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/translations/it/LC_MESSAGES/messages.mo +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/translations/it/LC_MESSAGES/messages.po +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/translations/messages.pot +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/utils/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/utils/auth.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/utils/exceptions.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/utils/relationship_validator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/utils/stratigraphic_validator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/utils/tma_label_generator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/utils/validators.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/vocab/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/vocab/exceptions.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/vocab/i18n.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/vocab/loader.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/vocab/provider.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/vocab/translations/vocab_en.json +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/vocab/translations/vocab_it.json +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/vocab/types.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/app.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/auth_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/em_node_config_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/excel_import_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/graph_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/paradata_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/paradata_ui_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/pottery_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/pyarchinit_import_export_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/s3d_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/socketio_events.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/css/style.css +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/images/favicon.ico +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/images/logo.png +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/images/no-image.png +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/images/pyarchinit-mini-logo.png +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/js/OrbitControls.js +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/js/harris_creator_editor.js +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/js/stratigraphic_layout.js +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/js/three-d-viewer.js +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/js/three.min.js +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/js/universal_search.js +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.bin +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.gltf +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.mtl +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.obj +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/3d_builder/index.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/3d_viewer/viewer.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/admin/backups.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/admin/database.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/admin/database_connect.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/admin/database_info.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/admin/database_upload.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/admin/settings_ai.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/ai/assistant.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/analytics/dashboard.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/auth/login.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/auth/users.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/base.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/blender_viewer.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/components/language_switcher.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/dashboard.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/datazioni/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/docs/index.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/em_node_config/index.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/excel_import/index.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/export/export_import.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/graph_import_preview.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/graph_import_result.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/harris_creator/index.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/harris_matrix/graphml_export.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/harris_matrix/large_graph_message.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/harris_matrix/stratigraph_viewer.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/harris_matrix/view.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/harris_matrix/view_graphviz.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/harris_matrix/viewer_3d_integrated.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/inventario/form.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/inventario/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/media/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/media/upload.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/messaging/contacts.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/operators/directory.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/paradata/edit.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/paradata/index.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/paradata/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/pdf/pottery_sheet.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/periodizzazione/form.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/periodizzazione/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/periodizzazione/periods.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/pottery/detail.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/pottery/form.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/pottery/import_form.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/pottery/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/pyarchinit_import_export/index.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/search/results.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/sites/detail.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/sites/form.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/sites/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/sites/map.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/stats/targeted.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/thesaurus/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/tma/form.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/tma/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/us/form.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/us/list.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/templates/validation/report.html +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/test_prova_extended_matrix.graphml +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/three_d_builder_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.graphml +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.json +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/vocab_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_heriverse.json +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_stratigraphy.graphml +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_stratigraphy.json +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.json +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini.egg-info/dependency_links.txt +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini.egg-info/entry_points.txt +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini.egg-info/not-zip-safe +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini.egg-info/requires.txt +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini.egg-info/top_level.txt +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/requirements.txt +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/setup.cfg +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/setup.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/conftest.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/e2e/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/e2e/test_web_vocab_full_flow.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/fixtures/_generate_baseline_graphml.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/fixtures/_generate_synthetic_db.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/fixtures/build_legacy_with_pottery.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_admin_ai_settings_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_admin_backup_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_auto_regen_on_save.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_full_sync_flow.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_graph_import_flow.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_graph_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_harris_matrix_post_cutover.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_harris_matrix_visual_parity.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_harris_swimlane_routes_create_row.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_harris_swimlane_routes_load.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_harris_swimlane_routes_save.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_migrate_vocab_cli.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_paradata_routes_authors.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_paradata_routes_other_types.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_paradata_ui.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_pottery_completion.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_pottery_excel_roundtrip.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_pottery_legacy_upgrade.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_pottery_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_spec2_coverage_gaps.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_vocab_routes.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_yed_export_route.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/integration/test_yed_writer_parity.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/__init__.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_app_setting_model.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_app_setting_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_auto_regen.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_backup_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_bundle.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_concurrency_columns.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_concurrency_manager.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_connectivity_monitor.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_database_utils.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_deprecated_writers_shim.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_em_palette_vocab_backed.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_graphml_io_reader.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_graphml_io_writer.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_graphproj_edge_registry.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_graphproj_exceptions.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_graphproj_filesystem.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_graphproj_ingestor_apply.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_graphproj_ingestor_preview.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_graphproj_projector.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_harris_swimlane_compound_layout.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_harris_swimlane_exceptions.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_harris_swimlane_period_sync.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_harris_swimlane_row_provider.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_harris_swimlane_state_load.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_harris_swimlane_state_save.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_ingest_plan.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_inventario_schema.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_migrations_backup.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_migrations_idempotent.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_optimistic_locking.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_paradata_store_authors.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_paradata_store_basic.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_paradata_store_other_types.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_pottery_dto.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_pottery_model.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_pottery_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_s3d_converter_vocab_backed.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_site_service.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_sync_api.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_sync_cli.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_sync_orchestrator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_sync_queue.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_sync_state_machine.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_us_dto_unita_tipo_validator.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_us_schema.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_uuid_manager.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_vocab_bootstrap_failures.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_vocab_exceptions.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_vocab_i18n.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_vocab_loader.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_vocab_provider.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_vocab_types.py +0 -0
- {pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/tests/unit/test_yed_writer.py +0 -0
|
@@ -1,3 +1,72 @@
|
|
|
1
|
+
## [2.4.6] - 2026-05-18
|
|
2
|
+
|
|
3
|
+
### Fixed (IT)
|
|
4
|
+
- Editor swimlane su DB SQLite locali tornava HTTP 500 "no such column:
|
|
5
|
+
periodo" perché `period_table` era stata creata dal modello SQLAlchemy
|
|
6
|
+
con lo schema legacy `period_name/phase_name/start_date/end_date`.
|
|
7
|
+
Nuova migration `_2026_05_period_table_schema` aggiunge le colonne
|
|
8
|
+
reali pyarchinit (`periodo`, `fase`, `datazione`, `descrizione`,
|
|
9
|
+
`sito`) e backfilla `periodo ← period_name`, `fase ← phase_name`.
|
|
10
|
+
Auto-applicata dal `migrate_all_tables()`.
|
|
11
|
+
- Modello SQLAlchemy `Period` aggiornato per dichiarare entrambi i set
|
|
12
|
+
di colonne (legacy + reale), così `Base.metadata.create_all()` su DB
|
|
13
|
+
nuovi parte già con lo schema corretto.
|
|
14
|
+
|
|
15
|
+
### Fixed (EN)
|
|
16
|
+
- Swimlane editor on local SQLite DBs returned HTTP 500 "no such column:
|
|
17
|
+
periodo" because `period_table` was created with the legacy schema
|
|
18
|
+
(`period_name/phase_name/...`). New `_2026_05_period_table_schema`
|
|
19
|
+
migration adds the real pyarchinit columns (`periodo`, `fase`,
|
|
20
|
+
`datazione`, `descrizione`, `sito`) and backfills them from legacy
|
|
21
|
+
ones. Auto-applied by `migrate_all_tables()`.
|
|
22
|
+
- SQLAlchemy `Period` model now declares both legacy and real column
|
|
23
|
+
sets, so freshly-created DBs start with the right shape.
|
|
24
|
+
|
|
25
|
+
## [2.4.5] - 2026-05-18
|
|
26
|
+
|
|
27
|
+
### Changed (IT)
|
|
28
|
+
- `/api/node-types` ora alimenta la sidebar del Harris Creator **direttamente
|
|
29
|
+
da VocabProvider** (s3dgraphy JSON catalogues), abbandonando il vecchio
|
|
30
|
+
YAML legacy. Conseguenza: i tipi USVs / USVn / USN / RSF / serSU /
|
|
31
|
+
serUSD / serUSVn / serUSVs / TSU / UL / BR / SE / USD compaiono
|
|
32
|
+
finalmente in sidebar. Aggiornare s3dgraphy aggiungerà automaticamente
|
|
33
|
+
nuovi tipi all'editor.
|
|
34
|
+
- Colore e forma di ogni voce vengono presi da `visual_style.fill_color`
|
|
35
|
+
e `visual_style.shape` di s3dgraphy (es. SF / VSF / RSF = octagon,
|
|
36
|
+
USVs = parallelogram, USVn = hexagon, USD = roundrectangle, BR = diamond).
|
|
37
|
+
|
|
38
|
+
### Fixed (IT)
|
|
39
|
+
- Pannello Properties ora si popola correttamente al click di un nodo US:
|
|
40
|
+
`SwimlaneState.load` aggiunge `us_number`, `description` (da
|
|
41
|
+
`d_stratigrafica`), `area`, `datazione`, `file_path` ai `data` Cytoscape
|
|
42
|
+
che il pannello legge.
|
|
43
|
+
- Ai US viene allegato anche `shape` / `border_color` / `border_style` da
|
|
44
|
+
VocabProvider — i nodi rendono con la simbologia EM appropriata, non più
|
|
45
|
+
rettangoli grigi.
|
|
46
|
+
|
|
47
|
+
### Added (IT)
|
|
48
|
+
- Toggle Hide/Show del pannello Properties (icona angle-double in alto a
|
|
49
|
+
destra del pannello): collassa a 36px e la scelta viene persistita in
|
|
50
|
+
`localStorage`. Cytoscape viene `fit()` dopo l'animazione per riempire
|
|
51
|
+
lo spazio guadagnato.
|
|
52
|
+
|
|
53
|
+
### Changed (EN)
|
|
54
|
+
- `/api/node-types` is now sourced from VocabProvider (s3dgraphy JSON
|
|
55
|
+
catalogues). Bumping s3dgraphy is enough to surface new types in the
|
|
56
|
+
sidebar.
|
|
57
|
+
- US nodes pick `shape`/`fill_color`/`border_color`/`border_style` from
|
|
58
|
+
the s3dgraphy `visual_style` block so EM symbology renders correctly.
|
|
59
|
+
|
|
60
|
+
### Fixed (EN)
|
|
61
|
+
- Properties panel populates again on node click — `SwimlaneState.load`
|
|
62
|
+
now attaches `us_number` / `description` / `area` / `datazione` /
|
|
63
|
+
`file_path` to the Cytoscape `data` payload.
|
|
64
|
+
|
|
65
|
+
### Added (EN)
|
|
66
|
+
- Properties panel Hide/Show toggle (collapses to a thin strip on the
|
|
67
|
+
right). Choice persisted in `localStorage`; Cytoscape re-fits the
|
|
68
|
+
viewport after the transition.
|
|
69
|
+
|
|
1
70
|
## [2.4.4] - 2026-05-18
|
|
2
71
|
|
|
3
72
|
### 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.6
|
|
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
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"""Schema migration (2026-05-18):
|
|
2
|
+
Add the pyarchinit-compatible columns to ``period_table``.
|
|
3
|
+
|
|
4
|
+
The SQLAlchemy ``Period`` model historically declared (``period_name``,
|
|
5
|
+
``phase_name``, ``start_date``, ``end_date``, ``description``, ``chronology``).
|
|
6
|
+
The real pyarchinit schema (used by QGIS plugin and PG ``pyarchinit_v2``)
|
|
7
|
+
is (``periodo``, ``fase``, ``datazione``, ``descrizione``, ``sito``). Spec
|
|
8
|
+
3-bis queries the latter, so existing SQLite/PostgreSQL DBs created via
|
|
9
|
+
``Base.metadata.create_all()`` need the new columns aliased over.
|
|
10
|
+
|
|
11
|
+
Idempotent: re-running on a DB that already has the new columns is a
|
|
12
|
+
no-op. Backfills ``periodo`` from ``period_name`` / ``fase`` from
|
|
13
|
+
``phase_name`` when both exist.
|
|
14
|
+
|
|
15
|
+
Supports SQLite and PostgreSQL backends.
|
|
16
|
+
"""
|
|
17
|
+
import sqlite3
|
|
18
|
+
from dataclasses import dataclass, field
|
|
19
|
+
from urllib.parse import urlparse
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@dataclass
|
|
23
|
+
class MigrationReport:
|
|
24
|
+
script: str
|
|
25
|
+
db: str
|
|
26
|
+
tables_changed: list = field(default_factory=list)
|
|
27
|
+
tables_skipped: list = field(default_factory=list)
|
|
28
|
+
dry_run: bool = False
|
|
29
|
+
status: str = "ok"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
TABLE = "period_table"
|
|
33
|
+
NEW_COLUMNS = [
|
|
34
|
+
("periodo", "TEXT"),
|
|
35
|
+
("fase", "TEXT"),
|
|
36
|
+
("datazione", "TEXT"),
|
|
37
|
+
("descrizione", "TEXT"),
|
|
38
|
+
("sito", "TEXT"),
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _table_exists_sqlite(conn, table):
|
|
43
|
+
return conn.execute(
|
|
44
|
+
"SELECT name FROM sqlite_master WHERE type='table' AND name=?", (table,)
|
|
45
|
+
).fetchone() is not None
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _has_column_sqlite(conn, table, col):
|
|
49
|
+
rows = conn.execute(f"PRAGMA table_info({table})").fetchall()
|
|
50
|
+
return any(r[1] == col for r in rows)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _run_sqlite(path: str, dry_run: bool, report: MigrationReport) -> None:
|
|
54
|
+
conn = sqlite3.connect(path)
|
|
55
|
+
try:
|
|
56
|
+
if not _table_exists_sqlite(conn, TABLE):
|
|
57
|
+
report.tables_skipped.append(f"{TABLE} (missing)")
|
|
58
|
+
return
|
|
59
|
+
existing = {r[1] for r in conn.execute(f"PRAGMA table_info({TABLE})").fetchall()}
|
|
60
|
+
added = []
|
|
61
|
+
for col, ctype in NEW_COLUMNS:
|
|
62
|
+
if col in existing:
|
|
63
|
+
continue
|
|
64
|
+
if not dry_run:
|
|
65
|
+
conn.execute(f"ALTER TABLE {TABLE} ADD COLUMN {col} {ctype}")
|
|
66
|
+
added.append(col)
|
|
67
|
+
# Backfill: periodo ← period_name, fase ← phase_name (only if legacy cols exist)
|
|
68
|
+
if not dry_run and added:
|
|
69
|
+
if "period_name" in existing and "periodo" in added:
|
|
70
|
+
conn.execute(
|
|
71
|
+
f"UPDATE {TABLE} SET periodo = period_name WHERE periodo IS NULL"
|
|
72
|
+
)
|
|
73
|
+
if "phase_name" in existing and "fase" in added:
|
|
74
|
+
conn.execute(
|
|
75
|
+
f"UPDATE {TABLE} SET fase = phase_name WHERE fase IS NULL"
|
|
76
|
+
)
|
|
77
|
+
conn.commit()
|
|
78
|
+
if added:
|
|
79
|
+
report.tables_changed.append(f"{TABLE} (+{','.join(added)})")
|
|
80
|
+
else:
|
|
81
|
+
report.tables_skipped.append(f"{TABLE} (already aligned)")
|
|
82
|
+
finally:
|
|
83
|
+
conn.close()
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _run_postgresql(url: str, dry_run: bool, report: MigrationReport) -> None:
|
|
87
|
+
import psycopg2
|
|
88
|
+
p = urlparse(url)
|
|
89
|
+
conn = psycopg2.connect(
|
|
90
|
+
host=p.hostname, port=p.port or 5432,
|
|
91
|
+
user=p.username, password=p.password,
|
|
92
|
+
dbname=p.path.lstrip("/"),
|
|
93
|
+
)
|
|
94
|
+
try:
|
|
95
|
+
cur = conn.cursor()
|
|
96
|
+
cur.execute(
|
|
97
|
+
"SELECT to_regclass(%s)", (f"public.{TABLE}",)
|
|
98
|
+
)
|
|
99
|
+
if cur.fetchone()[0] is None:
|
|
100
|
+
report.tables_skipped.append(f"{TABLE} (missing)")
|
|
101
|
+
return
|
|
102
|
+
cur.execute(
|
|
103
|
+
"SELECT column_name FROM information_schema.columns "
|
|
104
|
+
"WHERE table_schema='public' AND table_name=%s", (TABLE,)
|
|
105
|
+
)
|
|
106
|
+
existing = {r[0] for r in cur.fetchall()}
|
|
107
|
+
added = []
|
|
108
|
+
for col, ctype in NEW_COLUMNS:
|
|
109
|
+
if col in existing:
|
|
110
|
+
continue
|
|
111
|
+
if not dry_run:
|
|
112
|
+
cur.execute(f"ALTER TABLE {TABLE} ADD COLUMN {col} {ctype}")
|
|
113
|
+
added.append(col)
|
|
114
|
+
if not dry_run and added:
|
|
115
|
+
if "period_name" in existing and "periodo" in added:
|
|
116
|
+
cur.execute(
|
|
117
|
+
f"UPDATE {TABLE} SET periodo = period_name WHERE periodo IS NULL"
|
|
118
|
+
)
|
|
119
|
+
if "phase_name" in existing and "fase" in added:
|
|
120
|
+
cur.execute(
|
|
121
|
+
f"UPDATE {TABLE} SET fase = phase_name WHERE fase IS NULL"
|
|
122
|
+
)
|
|
123
|
+
conn.commit()
|
|
124
|
+
if added:
|
|
125
|
+
report.tables_changed.append(f"{TABLE} (+{','.join(added)})")
|
|
126
|
+
else:
|
|
127
|
+
report.tables_skipped.append(f"{TABLE} (already aligned)")
|
|
128
|
+
finally:
|
|
129
|
+
conn.close()
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def run(url: str, dry_run: bool = False) -> MigrationReport:
|
|
133
|
+
report = MigrationReport(
|
|
134
|
+
script=__name__, db=url, dry_run=dry_run,
|
|
135
|
+
)
|
|
136
|
+
try:
|
|
137
|
+
if url.startswith("sqlite"):
|
|
138
|
+
path = url.replace("sqlite:///", "", 1)
|
|
139
|
+
_run_sqlite(path, dry_run, report)
|
|
140
|
+
elif url.startswith("postgresql") or url.startswith("postgres"):
|
|
141
|
+
_run_postgresql(url, dry_run, report)
|
|
142
|
+
else:
|
|
143
|
+
report.status = "unsupported"
|
|
144
|
+
except Exception as e:
|
|
145
|
+
report.status = f"error: {e}"
|
|
146
|
+
return report
|
{pyarchinit_mini-2.4.4 → pyarchinit_mini-2.4.6}/pyarchinit_mini/harris_swimlane/swimlane_state.py
RENAMED
|
@@ -52,31 +52,64 @@ class SwimlaneState:
|
|
|
52
52
|
provider = RowProvider(session, site)
|
|
53
53
|
rows = provider.list_rows()
|
|
54
54
|
|
|
55
|
-
# Resolve unit_type →
|
|
56
|
-
#
|
|
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
|
+
}
|
|
57
66
|
try:
|
|
58
67
|
from pyarchinit_mini.vocab.provider import VocabProvider
|
|
59
68
|
_vocab = VocabProvider.instance()
|
|
60
|
-
|
|
69
|
+
_style_cache: dict[str, dict] = {}
|
|
61
70
|
|
|
62
|
-
def
|
|
63
|
-
if ut in
|
|
64
|
-
return
|
|
71
|
+
def _style_for(ut: str) -> dict:
|
|
72
|
+
if ut in _style_cache:
|
|
73
|
+
return _style_cache[ut]
|
|
65
74
|
try:
|
|
66
|
-
|
|
67
|
-
|
|
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
|
+
}
|
|
68
98
|
except Exception:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
99
|
+
out = {"color": "#CCCCCC", "shape": "rectangle",
|
|
100
|
+
"border_color": "#333333", "border_style": "solid"}
|
|
101
|
+
_style_cache[ut] = out
|
|
102
|
+
return out
|
|
72
103
|
except Exception:
|
|
73
|
-
def
|
|
74
|
-
return "#CCCCCC"
|
|
104
|
+
def _style_for(ut: str) -> dict:
|
|
105
|
+
return {"color": "#CCCCCC", "shape": "rectangle",
|
|
106
|
+
"border_color": "#333333", "border_style": "solid"}
|
|
75
107
|
|
|
76
108
|
# Load US records for site
|
|
77
109
|
us_rows = session.execute(text(
|
|
78
110
|
"SELECT id_us, sito, area, us, unita_tipo, rapporti, node_uuid, "
|
|
79
|
-
"periodo_iniziale, fase_iniziale "
|
|
111
|
+
"periodo_iniziale, fase_iniziale, "
|
|
112
|
+
"d_stratigrafica, datazione, file_path "
|
|
80
113
|
"FROM us_table WHERE sito = :sito ORDER BY id_us"
|
|
81
114
|
), {"sito": site}).fetchall()
|
|
82
115
|
|
|
@@ -104,17 +137,30 @@ class SwimlaneState:
|
|
|
104
137
|
|
|
105
138
|
pos = initial_node_position(_RowLike(), idx)
|
|
106
139
|
|
|
140
|
+
style = _style_for(unita_tipo)
|
|
107
141
|
nodes.append(CytoscapeElement(
|
|
108
142
|
data={
|
|
109
143
|
"id": node_id,
|
|
110
144
|
"label": f"{unita_tipo}{us_num}",
|
|
111
145
|
"parent": parent_row_id,
|
|
112
146
|
"unit_type": unita_tipo,
|
|
113
|
-
|
|
114
|
-
"
|
|
115
|
-
"
|
|
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
|
|
116
153
|
"us": us_num,
|
|
154
|
+
"us_number": us_num, # Properties panel reads this name
|
|
117
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 "",
|
|
118
164
|
},
|
|
119
165
|
position=pos,
|
|
120
166
|
))
|
|
@@ -44,20 +44,38 @@ class USRelationships(BaseModel):
|
|
|
44
44
|
|
|
45
45
|
class Period(BaseModel):
|
|
46
46
|
"""
|
|
47
|
-
Archaeological periods and phases
|
|
47
|
+
Archaeological periods and phases.
|
|
48
|
+
|
|
49
|
+
Carries BOTH the legacy field set (``period_name``/``phase_name``/
|
|
50
|
+
``start_date``/``end_date``/``description``/``chronology``) and the
|
|
51
|
+
pyarchinit-real field set (``periodo``/``fase``/``datazione``/
|
|
52
|
+
``descrizione``/``sito``) so the same model works whether the database
|
|
53
|
+
was created by pyarchinit-mini's create_all (legacy names) or by
|
|
54
|
+
pyarchinit QGIS (real names). The Spec-3-bis swimlane editor queries
|
|
55
|
+
the real names; the ``_2026_05_period_table_schema`` migration adds
|
|
56
|
+
those columns to existing legacy-schema DBs and backfills them.
|
|
48
57
|
"""
|
|
49
58
|
__tablename__ = 'period_table'
|
|
50
|
-
|
|
59
|
+
|
|
51
60
|
id_period = Column(Integer, primary_key=True, autoincrement=True)
|
|
52
|
-
|
|
61
|
+
# Legacy column set (kept for backward compat with existing pyarchinit-mini DBs)
|
|
62
|
+
period_name = Column(String(200))
|
|
53
63
|
phase_name = Column(String(200))
|
|
54
|
-
start_date = Column(Integer)
|
|
55
|
-
end_date = Column(Integer)
|
|
64
|
+
start_date = Column(Integer)
|
|
65
|
+
end_date = Column(Integer)
|
|
56
66
|
description = Column(Text)
|
|
57
|
-
chronology = Column(String(100))
|
|
58
|
-
|
|
67
|
+
chronology = Column(String(100))
|
|
68
|
+
# Real pyarchinit column set (Spec 3-bis swimlane editor reads these)
|
|
69
|
+
sito = Column(String(350))
|
|
70
|
+
periodo = Column(String(200))
|
|
71
|
+
fase = Column(String(200))
|
|
72
|
+
datazione = Column(Text)
|
|
73
|
+
descrizione = Column(Text)
|
|
74
|
+
|
|
59
75
|
def __repr__(self):
|
|
60
|
-
|
|
76
|
+
# Prefer real-schema field when populated, fall back to legacy.
|
|
77
|
+
label = self.periodo or self.period_name or "?"
|
|
78
|
+
return f"<Period('{label}', sito={self.sito})>"
|
|
61
79
|
|
|
62
80
|
class Periodizzazione(BaseModel):
|
|
63
81
|
"""
|
|
@@ -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)}`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyarchinit-mini
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.6
|
|
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
|
|
@@ -65,6 +65,7 @@ pyarchinit_mini/database/migration_scripts/change_us_area_to_text.py
|
|
|
65
65
|
pyarchinit_mini/database/migration_scripts/change_us_area_to_text_simple.py
|
|
66
66
|
pyarchinit_mini/database/migrations/_2026_05_node_uuid_backfill.py
|
|
67
67
|
pyarchinit_mini/database/migrations/_2026_05_node_uuid_schema.py
|
|
68
|
+
pyarchinit_mini/database/migrations/_2026_05_period_table_schema.py
|
|
68
69
|
pyarchinit_mini/database/migrations/_2026_05_vocab_alignment.py
|
|
69
70
|
pyarchinit_mini/database/migrations/__init__.py
|
|
70
71
|
pyarchinit_mini/database/migrations/backup.py
|
|
@@ -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.6"
|
|
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
|