pyarchinit-mini 2.0.1__tar.gz → 2.0.2__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.0.1 → pyarchinit_mini-2.0.2}/CHANGELOG.md +14 -0
- {pyarchinit_mini-2.0.1/pyarchinit_mini.egg-info → pyarchinit_mini-2.0.2}/PKG-INFO +1 -1
- pyarchinit_mini-2.0.2/data/pyarchinit_tutorial.db +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/api/schemas.py +14 -5
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/dialogs.py +4 -3
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/graphml_parser.py +1 -1
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/inventario_service.py +2 -2
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/us_service.py +6 -5
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/app.py +4 -4
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/three_d_builder_routes.py +4 -4
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2/pyarchinit_mini.egg-info}/PKG-INFO +1 -1
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini.egg-info/SOURCES.txt +0 -16
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyproject.toml +1 -1
- pyarchinit_mini-2.0.1/data/media_viewer_demo.db +0 -0
- pyarchinit_mini-2.0.1/data/pyarchinit_mini 2.db +0 -0
- pyarchinit_mini-2.0.1/data/pyarchinit_mini.db +0 -0
- pyarchinit_mini-2.0.1/data/pyarchinit_tutorial.db +0 -0
- pyarchinit_mini-2.0.1/data/pyarchinit_tutorial_backup_20251030_093228.db +0 -0
- pyarchinit_mini-2.0.1/data/pyarchinit_tutorial_clean.db +0 -0
- pyarchinit_mini-2.0.1/data/pyarchinit_tutorial_video.db +0 -0
- pyarchinit_mini-2.0.1/data/pyarchinit_v18_demo.db +0 -0
- pyarchinit_mini-2.0.1/pyarchinit_mini/mcp_server/tools/create_database_tool.py +0 -118
- pyarchinit_mini-2.0.1/pyarchinit_mini/mcp_server/tools/create_harris_matrix_tool.py +0 -421
- pyarchinit_mini-2.0.1/pyarchinit_mini/scripts/create_correct_stratigraphy_sample.py +0 -373
- pyarchinit_mini-2.0.1/pyarchinit_mini/scripts/create_italian_sample_database.py +0 -302
- pyarchinit_mini-2.0.1/pyarchinit_mini/scripts/create_sample_for_webapp.py +0 -463
- pyarchinit_mini-2.0.1/pyarchinit_mini/scripts/create_sample_with_50_us.py +0 -353
- pyarchinit_mini-2.0.1/pyarchinit_mini/translations/en/LC_MESSAGES/messages.mo +0 -0
- pyarchinit_mini-2.0.1/pyarchinit_mini/translations/it/LC_MESSAGES/messages.mo +0 -0
- pyarchinit_mini-2.0.1/pyarchinit_mini/translations/messages.pot +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/MANIFEST.in +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/README.md +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/babel.cfg +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/data/pyarchinit_mini_sample.db +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/logo/logo_pyarchinit-mini.png +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/api/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/api/auth.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/api/dependencies.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/api/graphml.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/api/inventario.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/api/site.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/api/sync.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/api/us.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli/export_import_cli.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli/extended_matrix_import.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli/graphml_cli.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli/harris_import.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli/harris_template.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli/migrate.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli/pyarchinit_import_export_cli.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli/sync_cli.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli_interface/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/cli_interface/cli_app.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/config/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/config/connection_manager.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/config/em_node_config_manager.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/config/em_node_types.yaml +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/concurrency_manager.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/connection.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/database_creator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/manager.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/migration_scripts/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/migration_scripts/add_file_path.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/migration_scripts/add_i18n_columns.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/migration_scripts/add_tipo_documento.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/migration_scripts/change_us_area_to_text.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/migration_scripts/change_us_area_to_text_simple.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/migrations.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/postgres_installer.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/database/schemas.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/analytics_dialog.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/assets/logo.png +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/excel_import_dialog.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/export_import_dialog.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/graphml_export_dialog.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/gui_app.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/harris_matrix_editor.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/i18n.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/icons.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/inventario_dialog_extended.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/main_window.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/media_manager_advanced.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/postgres_installer_dialog.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/pyarchinit_import_export_dialog.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/thesaurus_dialog.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/desktop_gui/us_dialog_extended.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/dto/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/dto/inventario_dto.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/dto/site_dto.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/dto/us_dto.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/exceptions.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/converter.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/dot_parser.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/em_palette.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/graphml_builder.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/graphml_exporter.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/pure_networkx_exporter.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/svg_resources.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/templates/EM_palette.graphml +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/x11_colors.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/graphml_converter/yed_template.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/harris_matrix/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/harris_matrix/enhanced_visualizer.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/harris_matrix/matrix_generator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/harris_matrix/matrix_visualizer.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/harris_matrix/pyarchinit_visualizer.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/i18n/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/i18n/flask_babel_config.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/i18n/locale_manager.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/__main__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/blender_client.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/config.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/event_stream.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/http_server.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/period_filter.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/prompts/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/prompts/base_prompt.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/prompts/period_visualization_prompt.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/prompts/stratigraphic_model_prompt.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/prompts/us_description_prompt.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/proxy_generator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/resources/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/resources/base_resource.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/resources/graphml_resource.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/resources/periods_resource.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/resources/relationships_resource.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/resources/sites_resource.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/resources/us_resource.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/server.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/base_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/batch_insert_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/build_3d_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/chatgpt_fetch_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/chatgpt_search_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/configure_em_nodes_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/data_import_parser_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/data_management_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/database_manager_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/delete_data_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/export_harris_matrix_graphml_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/export_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/filter_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/generate_report_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/get_schema_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/import_excel_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/insert_data_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/manage_services_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/material_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/media_management_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/position_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/pyarchinit_sync_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/resolve_conflicts_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/service_management_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/thesaurus_management_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/update_data_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/upload_file_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/validate_relationship_format_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/validate_relationship_integrity_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/validate_stratigraphic_relationships_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/tools/validate_stratigraphy_tool.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/media_manager/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/media_manager/media_handler.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/base.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/datazione.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/extended_matrix.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/harris_matrix.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/inventario_materiali.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/media.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/site.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/thesaurus.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/us.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/models/user.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/pdf_export/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/pdf_export/pdf_generator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/pdf_export/pdf_generator_backup.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/pdf_export/pyarchinit_finds_template.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/pdf_export/pyarchinit_inventory_template.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/pdf_export/usm_implementation.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/s3d_integration/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/s3d_integration/model_manager.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/s3d_integration/s3d_converter.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/auto_translate.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/configure_claude_desktop.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/create_admin_user.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/generate_test_3d_model.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/load_italian_as_main.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/load_sample_as_main.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/migrate_relationships.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/populate_sample_data.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/populate_simple_data.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/setup_auth.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/setup_user_env.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/test_cascade_delete.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/test_relationship_fix.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/update_sample_relationships.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/update_urls_and_versions.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/scripts/verify_docs.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/analytics_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/command_parser.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/datazione_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/export_import_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/extended_matrix_excel_parser.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/import_export_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/mcp_executor.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/media_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/periodizzazione_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/relationship_sync_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/site_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/thesaurus_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/user_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/stratigraph/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/stratigraph/bundle_creator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/stratigraph/bundle_manifest.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/stratigraph/bundle_validator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/stratigraph/connectivity_monitor.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/stratigraph/sync_orchestrator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/stratigraph/sync_queue.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/stratigraph/sync_state_machine.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/stratigraph/uuid_manager.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/translations/en/LC_MESSAGES/messages.po +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/translations/it/LC_MESSAGES/messages.po +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/utils/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/utils/auth.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/utils/exceptions.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/utils/relationship_validator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/utils/stratigraphic_validator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/utils/validators.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/auth_routes.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/em_node_config_routes.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/excel_import_routes.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/harris_creator_routes.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/pyarchinit_import_export_routes.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/s3d_routes.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/socketio_events.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/css/style.css +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/images/favicon.ico +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/images/logo.png +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/images/pyarchinit-mini-logo.png +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/js/OrbitControls.js +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/js/harris_creator_editor.js +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/js/stratigraphic_layout.js +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/js/three-d-viewer.js +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/js/three.min.js +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.bin +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.gltf +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.mtl +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.obj +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/3d_builder/index.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/3d_viewer/viewer.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/admin/database.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/admin/database_connect.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/admin/database_info.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/admin/database_upload.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/analytics/dashboard.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/auth/login.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/auth/users.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/base.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/blender_viewer.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/components/language_switcher.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/dashboard.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/datazioni/list.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/em_node_config/index.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/excel_import/index.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/export/export_import.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/harris_creator/editor.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/harris_creator/index.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/harris_matrix/graphml_export.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/harris_matrix/large_graph_message.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/harris_matrix/stratigraph_viewer.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/harris_matrix/view.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/harris_matrix/view_graphviz.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/harris_matrix/viewer_3d_integrated.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/inventario/form.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/inventario/list.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/media/list.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/media/upload.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/periodizzazione/form.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/periodizzazione/list.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/periodizzazione/periods.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/pyarchinit_import_export/index.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/sites/detail.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/sites/form.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/sites/list.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/thesaurus/list.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/us/form.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/us/list.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/templates/validation/report.html +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/test_prova_extended_matrix.graphml +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.graphml +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.json +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_heriverse.json +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_stratigraphy.graphml +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_stratigraphy.json +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.json +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini.egg-info/dependency_links.txt +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini.egg-info/entry_points.txt +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini.egg-info/not-zip-safe +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini.egg-info/requires.txt +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini.egg-info/top_level.txt +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/requirements.txt +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/setup.cfg +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/setup.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/conftest.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/integration/__init__.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/integration/test_full_sync_flow.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_bundle.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_concurrency_columns.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_concurrency_manager.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_connectivity_monitor.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_inventario_schema.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_optimistic_locking.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_site_service.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_sync_api.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_sync_cli.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_sync_orchestrator.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_sync_queue.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_sync_state_machine.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_us_schema.py +0 -0
- {pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/tests/unit/test_uuid_manager.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [2.0.2] - 2026-02-24
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
- **PostgreSQL type mismatch on US creation**: `us_table.us` column was migrated from INTEGER to VARCHAR(100) but code was still passing integer values, causing `psycopg2.errors.UndefinedFunction: operator does not exist: character varying = integer` on PostgreSQL databases
|
|
5
|
+
- Fixed `us_service._get_us_by_site_area_number`: always cast `us_number` to `str` in SQL params
|
|
6
|
+
- Fixed `us_service.create_us_dto`: cast `US.us == str(us_data['us'])` in ORM filter
|
|
7
|
+
- Fixed `web_interface/app.py`: `us` field kept as `str` instead of `int` in `us_data` dict (create and update flows)
|
|
8
|
+
- Fixed `web_interface/three_d_builder_routes.py`: `US.us == str(data['us'])` in all 3D builder filters
|
|
9
|
+
- Fixed `desktop_gui/dialogs.py`: validate US number as int but pass as str to DB layer
|
|
10
|
+
- Fixed `inventario_service.py`: cast `us_number` to str in all US existence checks
|
|
11
|
+
- Fixed `api/schemas.py`: `us` field changed from `int` to `str` (with backward-compatible validator accepting both)
|
|
12
|
+
- Fixed `mcp_server/graphml_parser.py`: safe int cast for Periodizzazione.us comparison (still INTEGER column)
|
|
13
|
+
|
|
14
|
+
|
|
1
15
|
# Changelog
|
|
2
16
|
|
|
3
17
|
All notable changes to PyArchInit-Mini will be documented in this file.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyarchinit-mini
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
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
|
|
Binary file
|
|
@@ -3,7 +3,7 @@ Pydantic schemas for API request/response validation
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from datetime import datetime
|
|
6
|
-
from typing import Optional, List
|
|
6
|
+
from typing import Optional, List, Union
|
|
7
7
|
from pydantic import BaseModel, Field, validator
|
|
8
8
|
|
|
9
9
|
# Base schemas
|
|
@@ -59,7 +59,12 @@ class USBase(BaseModel):
|
|
|
59
59
|
"""Base US schema"""
|
|
60
60
|
sito: str = Field(..., max_length=350, description="Site name")
|
|
61
61
|
area: Optional[str] = Field(None, max_length=20, description="Area")
|
|
62
|
-
us:
|
|
62
|
+
us: str = Field(..., description="US number (numeric or alphanumeric, e.g. '1' or 'A1')")
|
|
63
|
+
|
|
64
|
+
@validator('us', pre=True)
|
|
65
|
+
def us_to_str(cls, v):
|
|
66
|
+
"""Accept int or str — us column is VARCHAR(100)"""
|
|
67
|
+
return str(v).strip() if v is not None else v
|
|
63
68
|
d_stratigrafica: Optional[str] = Field(None, max_length=350, description="Stratigraphic description")
|
|
64
69
|
d_interpretativa: Optional[str] = Field(None, max_length=350, description="Interpretative description")
|
|
65
70
|
descrizione: Optional[str] = Field(None, description="Description")
|
|
@@ -231,7 +236,11 @@ class USUpdate(BaseModel):
|
|
|
231
236
|
"""Schema for updating a US"""
|
|
232
237
|
sito: Optional[str] = Field(None, max_length=350)
|
|
233
238
|
area: Optional[str] = Field(None, max_length=20)
|
|
234
|
-
us: Optional[
|
|
239
|
+
us: Optional[str] = Field(None, description="US number (numeric or alphanumeric)")
|
|
240
|
+
|
|
241
|
+
@validator('us', pre=True)
|
|
242
|
+
def us_to_str(cls, v):
|
|
243
|
+
return str(v).strip() if v is not None else v
|
|
235
244
|
d_stratigrafica: Optional[str] = Field(None, max_length=350)
|
|
236
245
|
d_interpretativa: Optional[str] = Field(None, max_length=350)
|
|
237
246
|
descrizione: Optional[str] = None
|
|
@@ -413,7 +422,7 @@ class InventarioBase(BaseModel):
|
|
|
413
422
|
definizione: Optional[str] = Field(None, max_length=20, description="Definition")
|
|
414
423
|
descrizione: Optional[str] = Field(None, description="Description")
|
|
415
424
|
area: Optional[str] = Field(None, max_length=20, description="Area")
|
|
416
|
-
us: Optional[
|
|
425
|
+
us: Optional[str] = Field(None, description="US number (numeric or alphanumeric)")
|
|
417
426
|
lavato: Optional[str] = Field(None, max_length=5, description="Washed")
|
|
418
427
|
nr_cassa: Optional[str] = Field(None, max_length=20, description="Box number")
|
|
419
428
|
luogo_conservazione: Optional[str] = Field(None, max_length=350, description="Conservation location")
|
|
@@ -460,7 +469,7 @@ class InventarioUpdate(BaseModel):
|
|
|
460
469
|
definizione: Optional[str] = Field(None, max_length=20)
|
|
461
470
|
descrizione: Optional[str] = None
|
|
462
471
|
area: Optional[str] = Field(None, max_length=20)
|
|
463
|
-
us: Optional[
|
|
472
|
+
us: Optional[str] = Field(None, description="US number")
|
|
464
473
|
lavato: Optional[str] = Field(None, max_length=5)
|
|
465
474
|
nr_cassa: Optional[str] = Field(None, max_length=20)
|
|
466
475
|
luogo_conservazione: Optional[str] = Field(None, max_length=350)
|
|
@@ -643,17 +643,18 @@ class USDialog(BaseDialog):
|
|
|
643
643
|
messagebox.showerror(_("Error"), _("US number is required"))
|
|
644
644
|
return
|
|
645
645
|
|
|
646
|
+
# Validate: must be numeric (keep legacy GUI behavior)
|
|
646
647
|
try:
|
|
647
|
-
|
|
648
|
+
int(us_number) # validate only, keep as string for DB
|
|
648
649
|
except ValueError:
|
|
649
650
|
messagebox.showerror(_("Error"), _("US number must be an integer"))
|
|
650
651
|
return
|
|
651
652
|
|
|
652
|
-
# Prepare data
|
|
653
|
+
# Prepare data (us is VARCHAR(100) in DB — pass as string)
|
|
653
654
|
us_data = {
|
|
654
655
|
'sito': sito,
|
|
655
656
|
'area': self.fields['area'].get().strip() or None,
|
|
656
|
-
'us': us_number,
|
|
657
|
+
'us': str(us_number).strip(),
|
|
657
658
|
'd_stratigrafica': self.fields['d_stratigrafica'].get("1.0", tk.END).strip() or None,
|
|
658
659
|
'd_interpretativa': self.fields['d_interpretativa'].get("1.0", tk.END).strip() or None,
|
|
659
660
|
'schedatore': self.fields['schedatore'].get().strip() or None,
|
{pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/mcp_server/graphml_parser.py
RENAMED
|
@@ -543,7 +543,7 @@ class GraphMLParser:
|
|
|
543
543
|
.filter(
|
|
544
544
|
Periodizzazione.sito == us_record.sito,
|
|
545
545
|
Periodizzazione.area == us_record.area,
|
|
546
|
-
Periodizzazione.us == us_record.us,
|
|
546
|
+
Periodizzazione.us == (int(us_record.us) if str(us_record.us).lstrip('-').isdigit() else -1),
|
|
547
547
|
)
|
|
548
548
|
.first()
|
|
549
549
|
)
|
{pyarchinit_mini-2.0.1 → pyarchinit_mini-2.0.2}/pyarchinit_mini/services/inventario_service.py
RENAMED
|
@@ -97,7 +97,7 @@ class InventarioService:
|
|
|
97
97
|
count = session.query(US).filter(
|
|
98
98
|
US.sito == sito,
|
|
99
99
|
or_(US.area == area, (US.area.is_(None) & (area == ''))),
|
|
100
|
-
US.us == us_number
|
|
100
|
+
US.us == str(us_number) # us is VARCHAR(100)
|
|
101
101
|
).count()
|
|
102
102
|
|
|
103
103
|
if count == 0:
|
|
@@ -271,7 +271,7 @@ class InventarioService:
|
|
|
271
271
|
count = self.db_manager.execute_raw_query(query, {
|
|
272
272
|
'sito': sito,
|
|
273
273
|
'area': area,
|
|
274
|
-
'us_number': us_number
|
|
274
|
+
'us_number': str(us_number) # us is VARCHAR(100)
|
|
275
275
|
})[0][0]
|
|
276
276
|
|
|
277
277
|
if count == 0:
|
|
@@ -60,7 +60,7 @@ class USService:
|
|
|
60
60
|
existing_us = session.query(US).filter(
|
|
61
61
|
US.sito == us_data['sito'],
|
|
62
62
|
US.area == us_data.get('area', ''),
|
|
63
|
-
US.us == us_data['us']
|
|
63
|
+
US.us == str(us_data['us']) # us is VARCHAR(100)
|
|
64
64
|
).first()
|
|
65
65
|
|
|
66
66
|
if existing_us:
|
|
@@ -237,9 +237,10 @@ class USService:
|
|
|
237
237
|
filters = {'sito': site_name, 'area': area}
|
|
238
238
|
return self.get_all_us(page=page, size=size, filters=filters)
|
|
239
239
|
|
|
240
|
-
def _get_us_by_site_area_number(self, sito: str, area: str, us_number
|
|
241
|
-
"""Get US by site, area and number combination
|
|
242
|
-
|
|
240
|
+
def _get_us_by_site_area_number(self, sito: str, area: str, us_number) -> Optional[US]:
|
|
241
|
+
"""Get US by site, area and number combination.
|
|
242
|
+
us_number can be int or str — us column is VARCHAR(100) in PostgreSQL.
|
|
243
|
+
"""
|
|
243
244
|
query = """
|
|
244
245
|
SELECT * FROM us_table
|
|
245
246
|
WHERE sito = :sito AND
|
|
@@ -252,7 +253,7 @@ class USService:
|
|
|
252
253
|
result = session.execute(text(query), {
|
|
253
254
|
'sito': sito,
|
|
254
255
|
'area': area,
|
|
255
|
-
'us_number': us_number
|
|
256
|
+
'us_number': str(us_number) # always str: us column is VARCHAR
|
|
256
257
|
}).fetchone()
|
|
257
258
|
|
|
258
259
|
if result:
|
|
@@ -884,7 +884,7 @@ def create_app():
|
|
|
884
884
|
# TAB 1: Informazioni Base
|
|
885
885
|
'sito': form.sito.data,
|
|
886
886
|
'area': form.area.data,
|
|
887
|
-
'us':
|
|
887
|
+
'us': str(form.us.data).strip() if form.us.data else None,
|
|
888
888
|
'unita_tipo': form.unita_tipo.data,
|
|
889
889
|
'tipo_documento': form.tipo_documento.data if form.unita_tipo.data == 'DOC' else None,
|
|
890
890
|
'anno_scavo': form.anno_scavo.data,
|
|
@@ -979,7 +979,7 @@ def create_app():
|
|
|
979
979
|
with db_manager.connection.get_session() as session:
|
|
980
980
|
relationship_sync_service.sync_rapporti_to_relationships_table(
|
|
981
981
|
sito=us_data['sito'],
|
|
982
|
-
us_number=int(us_data['us']),
|
|
982
|
+
us_number=int(str(us_data['us'])) if us_data.get('us') and str(us_data.get('us','')).strip().lstrip('-').isdigit() else 0,
|
|
983
983
|
rapporti_text=us_data.get('rapporti', ''),
|
|
984
984
|
session=session
|
|
985
985
|
)
|
|
@@ -1117,7 +1117,7 @@ def create_app():
|
|
|
1117
1117
|
# TAB 1: Informazioni Base
|
|
1118
1118
|
'sito': form.sito.data,
|
|
1119
1119
|
'area': form.area.data,
|
|
1120
|
-
'us':
|
|
1120
|
+
'us': str(form.us.data).strip() if form.us.data else None,
|
|
1121
1121
|
'unita_tipo': form.unita_tipo.data,
|
|
1122
1122
|
'tipo_documento': form.tipo_documento.data if form.unita_tipo.data == 'DOC' else None,
|
|
1123
1123
|
'anno_scavo': form.anno_scavo.data,
|
|
@@ -1212,7 +1212,7 @@ def create_app():
|
|
|
1212
1212
|
with db_manager.connection.get_session() as session:
|
|
1213
1213
|
relationship_sync_service.sync_rapporti_to_relationships_table(
|
|
1214
1214
|
sito=update_data['sito'],
|
|
1215
|
-
us_number=int(update_data['us']),
|
|
1215
|
+
us_number=int(str(update_data['us'])) if update_data.get('us') and str(update_data.get('us','')).strip().lstrip('-').isdigit() else 0,
|
|
1216
1216
|
rapporti_text=update_data.get('rapporti', ''),
|
|
1217
1217
|
session=session
|
|
1218
1218
|
)
|
|
@@ -1354,7 +1354,7 @@ def create_us():
|
|
|
1354
1354
|
existing = db_session.query(US).filter(
|
|
1355
1355
|
US.sito == data['sito'],
|
|
1356
1356
|
US.area == data.get('area', ''),
|
|
1357
|
-
US.us ==
|
|
1357
|
+
US.us == str(data['us'])
|
|
1358
1358
|
).first()
|
|
1359
1359
|
|
|
1360
1360
|
if existing:
|
|
@@ -1367,7 +1367,7 @@ def create_us():
|
|
|
1367
1367
|
new_us = US()
|
|
1368
1368
|
new_us.sito = data['sito']
|
|
1369
1369
|
new_us.area = data.get('area', '')
|
|
1370
|
-
new_us.us =
|
|
1370
|
+
new_us.us = str(data['us'])
|
|
1371
1371
|
new_us.unita_tipo = 'USM' if data.get('tipo') == 'usm' else 'US'
|
|
1372
1372
|
new_us.d_stratigrafica = data.get('d_stratigrafica', '')
|
|
1373
1373
|
new_us.d_interpretativa = data.get('d_interpretativa', '')
|
|
@@ -1442,7 +1442,7 @@ def update_us():
|
|
|
1442
1442
|
us_record = db_session.query(US).filter(
|
|
1443
1443
|
US.sito == data['sito'],
|
|
1444
1444
|
US.area == data.get('area', ''),
|
|
1445
|
-
US.us ==
|
|
1445
|
+
US.us == str(data['us'])
|
|
1446
1446
|
).first()
|
|
1447
1447
|
|
|
1448
1448
|
if not us_record:
|
|
@@ -1520,7 +1520,7 @@ def delete_us():
|
|
|
1520
1520
|
us_record = db_session.query(US).filter(
|
|
1521
1521
|
US.sito == data['sito'],
|
|
1522
1522
|
US.area == data.get('area', ''),
|
|
1523
|
-
US.us ==
|
|
1523
|
+
US.us == str(data['us'])
|
|
1524
1524
|
).first()
|
|
1525
1525
|
|
|
1526
1526
|
if not us_record:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyarchinit-mini
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
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
|
|
@@ -5,15 +5,8 @@ babel.cfg
|
|
|
5
5
|
pyproject.toml
|
|
6
6
|
requirements.txt
|
|
7
7
|
setup.py
|
|
8
|
-
data/media_viewer_demo.db
|
|
9
|
-
data/pyarchinit_mini 2.db
|
|
10
|
-
data/pyarchinit_mini.db
|
|
11
8
|
data/pyarchinit_mini_sample.db
|
|
12
9
|
data/pyarchinit_tutorial.db
|
|
13
|
-
data/pyarchinit_tutorial_backup_20251030_093228.db
|
|
14
|
-
data/pyarchinit_tutorial_clean.db
|
|
15
|
-
data/pyarchinit_tutorial_video.db
|
|
16
|
-
data/pyarchinit_v18_demo.db
|
|
17
10
|
logo/logo_pyarchinit-mini.png
|
|
18
11
|
pyarchinit_mini/__init__.py
|
|
19
12
|
pyarchinit_mini/exceptions.py
|
|
@@ -132,8 +125,6 @@ pyarchinit_mini/mcp_server/tools/build_3d_tool.py
|
|
|
132
125
|
pyarchinit_mini/mcp_server/tools/chatgpt_fetch_tool.py
|
|
133
126
|
pyarchinit_mini/mcp_server/tools/chatgpt_search_tool.py
|
|
134
127
|
pyarchinit_mini/mcp_server/tools/configure_em_nodes_tool.py
|
|
135
|
-
pyarchinit_mini/mcp_server/tools/create_database_tool.py
|
|
136
|
-
pyarchinit_mini/mcp_server/tools/create_harris_matrix_tool.py
|
|
137
128
|
pyarchinit_mini/mcp_server/tools/data_import_parser_tool.py
|
|
138
129
|
pyarchinit_mini/mcp_server/tools/data_management_tool.py
|
|
139
130
|
pyarchinit_mini/mcp_server/tools/database_manager_tool.py
|
|
@@ -185,10 +176,6 @@ pyarchinit_mini/scripts/__init__.py
|
|
|
185
176
|
pyarchinit_mini/scripts/auto_translate.py
|
|
186
177
|
pyarchinit_mini/scripts/configure_claude_desktop.py
|
|
187
178
|
pyarchinit_mini/scripts/create_admin_user.py
|
|
188
|
-
pyarchinit_mini/scripts/create_correct_stratigraphy_sample.py
|
|
189
|
-
pyarchinit_mini/scripts/create_italian_sample_database.py
|
|
190
|
-
pyarchinit_mini/scripts/create_sample_for_webapp.py
|
|
191
|
-
pyarchinit_mini/scripts/create_sample_with_50_us.py
|
|
192
179
|
pyarchinit_mini/scripts/generate_test_3d_model.py
|
|
193
180
|
pyarchinit_mini/scripts/load_italian_as_main.py
|
|
194
181
|
pyarchinit_mini/scripts/load_sample_as_main.py
|
|
@@ -227,10 +214,7 @@ pyarchinit_mini/stratigraph/sync_orchestrator.py
|
|
|
227
214
|
pyarchinit_mini/stratigraph/sync_queue.py
|
|
228
215
|
pyarchinit_mini/stratigraph/sync_state_machine.py
|
|
229
216
|
pyarchinit_mini/stratigraph/uuid_manager.py
|
|
230
|
-
pyarchinit_mini/translations/messages.pot
|
|
231
|
-
pyarchinit_mini/translations/en/LC_MESSAGES/messages.mo
|
|
232
217
|
pyarchinit_mini/translations/en/LC_MESSAGES/messages.po
|
|
233
|
-
pyarchinit_mini/translations/it/LC_MESSAGES/messages.mo
|
|
234
218
|
pyarchinit_mini/translations/it/LC_MESSAGES/messages.po
|
|
235
219
|
pyarchinit_mini/utils/__init__.py
|
|
236
220
|
pyarchinit_mini/utils/auth.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyarchinit-mini"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.2"
|
|
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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Create Database Tool
|
|
3
|
-
|
|
4
|
-
Creates empty PyArchInit-Mini databases with full schema.
|
|
5
|
-
Supports both SQLite and PostgreSQL databases.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import logging
|
|
9
|
-
from typing import Dict, Any
|
|
10
|
-
from .base_tool import BaseTool, ToolDescription
|
|
11
|
-
|
|
12
|
-
logger = logging.getLogger(__name__)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class CreateDatabaseTool(BaseTool):
|
|
16
|
-
"""Create Database - Creates empty PyArchInit-Mini database with schema"""
|
|
17
|
-
|
|
18
|
-
def to_tool_description(self) -> ToolDescription:
|
|
19
|
-
return ToolDescription(
|
|
20
|
-
name="create_database",
|
|
21
|
-
description=(
|
|
22
|
-
"Create an empty PyArchInit-Mini database with full schema. "
|
|
23
|
-
"Supports SQLite and PostgreSQL. Creates all necessary tables "
|
|
24
|
-
"for sites, stratigraphic units, inventories, relationships, etc."
|
|
25
|
-
),
|
|
26
|
-
input_schema={
|
|
27
|
-
"type": "object",
|
|
28
|
-
"properties": {
|
|
29
|
-
"db_type": {
|
|
30
|
-
"type": "string",
|
|
31
|
-
"enum": ["sqlite", "postgresql"],
|
|
32
|
-
"description": "Database type: sqlite or postgresql"
|
|
33
|
-
},
|
|
34
|
-
"db_path": {
|
|
35
|
-
"type": "string",
|
|
36
|
-
"description": "For SQLite: file path (e.g., 'data/new_project.db'). For PostgreSQL: database name"
|
|
37
|
-
},
|
|
38
|
-
"overwrite": {
|
|
39
|
-
"type": "boolean",
|
|
40
|
-
"description": "If true, overwrite existing database. Default: false",
|
|
41
|
-
"default": False
|
|
42
|
-
},
|
|
43
|
-
"postgres_config": {
|
|
44
|
-
"type": "object",
|
|
45
|
-
"description": "PostgreSQL connection configuration (required for postgresql)",
|
|
46
|
-
"properties": {
|
|
47
|
-
"host": {"type": "string", "description": "PostgreSQL host", "default": "localhost"},
|
|
48
|
-
"port": {"type": "integer", "description": "PostgreSQL port", "default": 5432},
|
|
49
|
-
"user": {"type": "string", "description": "PostgreSQL user"},
|
|
50
|
-
"password": {"type": "string", "description": "PostgreSQL password"},
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
"required": ["db_type", "db_path"],
|
|
55
|
-
},
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
async def execute(self, arguments: Dict[str, Any]) -> Dict[str, Any]:
|
|
59
|
-
"""Execute database creation"""
|
|
60
|
-
try:
|
|
61
|
-
db_type = arguments.get("db_type")
|
|
62
|
-
db_path = arguments.get("db_path")
|
|
63
|
-
overwrite = arguments.get("overwrite", False)
|
|
64
|
-
postgres_config = arguments.get("postgres_config", {})
|
|
65
|
-
|
|
66
|
-
if not db_type or not db_path:
|
|
67
|
-
return self._format_error("Both db_type and db_path are required")
|
|
68
|
-
|
|
69
|
-
logger.info(f"Creating {db_type} database: {db_path}")
|
|
70
|
-
|
|
71
|
-
if db_type == "sqlite":
|
|
72
|
-
result = self._create_sqlite(db_path, overwrite)
|
|
73
|
-
elif db_type == "postgresql":
|
|
74
|
-
result = self._create_postgresql(db_path, postgres_config, overwrite)
|
|
75
|
-
else:
|
|
76
|
-
return self._format_error(f"Invalid db_type: {db_type}")
|
|
77
|
-
|
|
78
|
-
if result.get('success'):
|
|
79
|
-
return self._format_success(result, f"Successfully created {db_type} database with {result.get('tables_created', 0)} tables")
|
|
80
|
-
else:
|
|
81
|
-
return self._format_error(result.get('message', 'Database creation failed'))
|
|
82
|
-
|
|
83
|
-
except Exception as e:
|
|
84
|
-
logger.error(f"Database creation error: {str(e)}", exc_info=True)
|
|
85
|
-
return self._format_error(f"Failed to create database: {str(e)}")
|
|
86
|
-
|
|
87
|
-
def _create_sqlite(self, db_path: str, overwrite: bool) -> Dict[str, Any]:
|
|
88
|
-
"""Create SQLite database"""
|
|
89
|
-
from pyarchinit_mini.database.database_creator import create_sqlite_database
|
|
90
|
-
try:
|
|
91
|
-
return create_sqlite_database(db_path, overwrite=overwrite)
|
|
92
|
-
except FileExistsError as e:
|
|
93
|
-
return {'success': False, 'message': f'Database already exists: {db_path}. Set overwrite=true to replace it.'}
|
|
94
|
-
except Exception as e:
|
|
95
|
-
return {'success': False, 'message': str(e)}
|
|
96
|
-
|
|
97
|
-
def _create_postgresql(self, db_name: str, config: Dict[str, Any], overwrite: bool) -> Dict[str, Any]:
|
|
98
|
-
"""Create PostgreSQL database"""
|
|
99
|
-
from pyarchinit_mini.database.database_creator import create_postgresql_database
|
|
100
|
-
try:
|
|
101
|
-
host = config.get('host', 'localhost')
|
|
102
|
-
port = config.get('port', 5432)
|
|
103
|
-
user = config.get('user')
|
|
104
|
-
password = config.get('password')
|
|
105
|
-
|
|
106
|
-
if not user:
|
|
107
|
-
return {'success': False, 'message': 'PostgreSQL user is required in postgres_config'}
|
|
108
|
-
|
|
109
|
-
return create_postgresql_database(
|
|
110
|
-
db_name=db_name,
|
|
111
|
-
host=host,
|
|
112
|
-
port=port,
|
|
113
|
-
user=user,
|
|
114
|
-
password=password,
|
|
115
|
-
overwrite=overwrite
|
|
116
|
-
)
|
|
117
|
-
except Exception as e:
|
|
118
|
-
return {'success': False, 'message': str(e)}
|