gramps-webapi 3.12.2__tar.gz → 3.13.0__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.
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.devcontainer/Dockerfile +7 -2
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/workflows/test.yml +8 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/PKG-INFO +1 -1
- gramps_webapi-3.13.0/alembic_users/versions/b2c3d4e5f6a7_add_tree_config_column.py +30 -0
- gramps_webapi-3.13.0/alembic_users/versions/c1d2e3f4a5b6_merge_task_tree_and_tree_config.py +21 -0
- gramps_webapi-3.13.0/alembic_users/versions/f3a1c8e92b47_add_task_tree_table.py +47 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/_version.py +1 -1
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/__init__.py +9 -1
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/filters.py +203 -131
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/history.py +8 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/schemas.py +4 -0
- gramps_webapi-3.13.0/gramps_webapi/api/resources/tasks.py +193 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/transactions.py +6 -1
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/trees.py +60 -6
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/util.py +12 -1
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/tasks.py +48 -4
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/__init__.py +39 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/const.py +1 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/undodb.py +4 -9
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/PKG-INFO +1 -1
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/SOURCES.txt +3 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_filters.py +224 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_history.py +37 -0
- gramps_webapi-3.13.0/tests/test_endpoints/test_tasks.py +353 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_transactions.py +49 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_trees.py +135 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_import_util.py +177 -3
- gramps_webapi-3.12.2/gramps_webapi/api/resources/tasks.py +0 -83
- gramps_webapi-3.12.2/tests/test_endpoints/test_tasks.py +0 -79
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.devcontainer/devcontainer.json +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.devcontainer/docker-compose.yml +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.dockerignore +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.editorconfig +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.flake8 +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/workflows/base-image.yml +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/workflows/image.yml +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/workflows/pypi.yml +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.gitignore +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.pre-commit-config.yaml +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.pylintrc +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.vscode/extensions.json +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.vscode/launch.json +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.vscode/settings.json +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.vscode/tasks.json +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/CLAUDE.md +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/CODE_OF_CONDUCT.md +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/CONTRIBUTING.md +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/Dockerfile +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/Dockerfile.base +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/LICENSE +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/MANIFEST.in +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/README.md +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic.ini +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/README +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/env.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/script.py.mako +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/2082445b0769_add_oidc_accounts_table_for_secure_.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/22c8d1fba959_add_trees_enabled.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/66e56620891a_add_trees_table.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/84960b7d968c_use_bigint_for_quota_media.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/a8e57fe0d82e_add_columns_for_ai_quota.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/b0582f54029c_use_bigint_for_usage_media.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/c89728e71264_.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/e176543c72a8_add_tree_column_to_user.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/e5e738d09fa7_added_configuration_table.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/docker-entrypoint.sh +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/__init__.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/__main__.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/auth.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/blueprint.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/cache.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/check.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/dna.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/emails.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/export.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/file.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/html.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/image.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/llm/__init__.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/llm/agent.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/llm/deps.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/llm/tools.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/media.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/media_importer.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/people_families_cache.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/ratelimiter.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/report.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/__init__.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/base.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/bookmarks.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/chat.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/citations.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/config.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/delete.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/dna.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/emit.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/events.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/export_media.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/exporters.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/face_detection.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/facts.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/families.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/file.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/holidays.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/import_media.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/importers.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/living.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/match.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/media.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/metadata.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/name_formats.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/name_groups.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/notes.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/objects.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/ocr.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/oidc.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/people.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/places.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/relations.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/reports.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/repositories.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/search.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/sort.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/sources.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/tags.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/timeline.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/token.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/translations.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/types.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/user.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/ydna.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/s3.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/__init__.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/embeddings.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/indexer.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/text.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/text_semantic.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/telemetry.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/util.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/app.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/const.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/cookies.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/oidc.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/oidc_helpers.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/passwords.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/sql_guid.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/token_blocklist.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/celery.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/config.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/data/empty_gramps_auth.cfg +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/data/example_gramps_auth.cfg +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/data/face_detection_yunet_2023mar.onnx +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/data/test_auth.cfg +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/dbloader.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/dbmanager.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/profiler.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/static/index.html +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/templates/confirmation.html +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/templates/reset_password.html +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/templates/reset_password_base.html +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/templates/reset_password_error.html +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/translogger.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/types.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/util/__init__.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/util/celery.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/wsgi.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/dependency_links.txt +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/requires.txt +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/top_level.txt +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/mypy.ini +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/pyproject.toml +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/requirements-dev.txt +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/scripts/s3_rename.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/scripts/start_dev_container.sh +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/semantic_index.txt +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/setup.cfg +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/setup.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/__init__.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_cli.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_db.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_dna_match_parser.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_embeddings.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/__init__.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/checks.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_bookmarks.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_chat.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_citations.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_config.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_delete.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_dna.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_events.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_exporters.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_facts.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_families.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_file.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_holidays.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_import_media.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_importers.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_living.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_media.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_media_archive.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_metadata.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_name_formats.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_name_groups.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_notes.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_ocr.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_oidc.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_people.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_places.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_post.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_put.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_ready.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_relations.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_repair.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_reports.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_repositories.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_s3.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_search.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_sources.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_tags.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_timelines.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_token.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_translations.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_types.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_upload.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_user.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_ydna.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/util.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_image.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_jwt.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_limiter.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_llm_tools.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_media_importer.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_migrate_grampsdb.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_oidc_auth.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_password.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_private_proxy.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_s3.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_sqlauth.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_telemetry.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_text.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_undodb.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_util.py +0 -0
- {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_version.py +0 -0
|
@@ -23,11 +23,16 @@ RUN mkdir -p $GRAMPSHOME/gramps/gramps$GRAMPS_VERSION/plugins && \
|
|
|
23
23
|
rm master.zip && \
|
|
24
24
|
chown -R vscode:vscode $GRAMPSHOME/gramps
|
|
25
25
|
|
|
26
|
+
# use a fixed path for Hugging Face model cache (must match runtime user)
|
|
27
|
+
ENV HF_HOME=/home/vscode/.cache/huggingface
|
|
28
|
+
RUN mkdir -p $HF_HOME && chown -R vscode:vscode $HF_HOME
|
|
29
|
+
|
|
26
30
|
# CPU-only version of PyTorch
|
|
27
31
|
RUN pip install torch --index-url https://download.pytorch.org/whl/cpu
|
|
28
32
|
RUN pip install sentence-transformers
|
|
29
33
|
|
|
30
|
-
# download and cache sentence transformer model
|
|
34
|
+
# download and cache sentence transformer model (run as vscode so cache is accessible at runtime)
|
|
35
|
+
USER vscode
|
|
31
36
|
RUN python3 -c "from sentence_transformers import SentenceTransformer; \
|
|
32
|
-
model = SentenceTransformer('sentence-transformers/distiluse-base-multilingual-cased-v2')"
|
|
37
|
+
model = SentenceTransformer('sentence-transformers/distiluse-base-multilingual-cased-v2')"
|
|
33
38
|
|
|
@@ -51,6 +51,14 @@ jobs:
|
|
|
51
51
|
sudo apt-get clean
|
|
52
52
|
pip cache purge
|
|
53
53
|
df -h
|
|
54
|
+
- name: Check for single alembic head
|
|
55
|
+
run: |
|
|
56
|
+
HEAD_COUNT=$(alembic heads | wc -l)
|
|
57
|
+
if [ "$HEAD_COUNT" -ne 1 ]; then
|
|
58
|
+
echo "ERROR: Multiple alembic heads detected! Run 'alembic heads' to inspect."
|
|
59
|
+
alembic heads
|
|
60
|
+
exit 1
|
|
61
|
+
fi
|
|
54
62
|
- name: Run type checker
|
|
55
63
|
run: mypy --install-types --non-interactive --ignore-missing-imports --exclude build .
|
|
56
64
|
- name: Test with pytest
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""Add trees.config JSON column
|
|
2
|
+
|
|
3
|
+
Revision ID: b2c3d4e5f6a7
|
|
4
|
+
Revises: 2082445b0769
|
|
5
|
+
Create Date: 2026-05-01 00:00:00.000000
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
from sqlalchemy.engine.reflection import Inspector
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "b2c3d4e5f6a7"
|
|
15
|
+
down_revision = "2082445b0769"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
conn = op.get_bind()
|
|
22
|
+
inspector = Inspector.from_engine(conn)
|
|
23
|
+
columns = [col["name"] for col in inspector.get_columns("trees")]
|
|
24
|
+
if "config" in columns:
|
|
25
|
+
return None
|
|
26
|
+
op.add_column("trees", sa.Column("config", sa.JSON(), nullable=True))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def downgrade():
|
|
30
|
+
op.drop_column("trees", "config")
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""Merge task_tree and tree_config heads
|
|
2
|
+
|
|
3
|
+
Revision ID: c1d2e3f4a5b6
|
|
4
|
+
Revises: b2c3d4e5f6a7, f3a1c8e92b47
|
|
5
|
+
Create Date: 2026-05-05 00:00:00.000000
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
# revision identifiers, used by Alembic.
|
|
10
|
+
revision = "c1d2e3f4a5b6"
|
|
11
|
+
down_revision = ("b2c3d4e5f6a7", "f3a1c8e92b47")
|
|
12
|
+
branch_labels = None
|
|
13
|
+
depends_on = None
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def upgrade():
|
|
17
|
+
pass
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def downgrade():
|
|
21
|
+
pass
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Add task_tree table
|
|
2
|
+
|
|
3
|
+
Revision ID: f3a1c8e92b47
|
|
4
|
+
Revises: 2082445b0769
|
|
5
|
+
Create Date: 2026-04-27 00:00:00.000000
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
from sqlalchemy.engine.reflection import Inspector
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "f3a1c8e92b47"
|
|
15
|
+
down_revision = "2082445b0769"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
conn = op.get_bind()
|
|
22
|
+
inspector = Inspector.from_engine(conn)
|
|
23
|
+
if "task_tree" in inspector.get_table_names():
|
|
24
|
+
return None
|
|
25
|
+
|
|
26
|
+
op.create_table(
|
|
27
|
+
"task_tree",
|
|
28
|
+
sa.Column("task_id", sa.String(155), nullable=False),
|
|
29
|
+
sa.Column("tree", sa.String(), nullable=True),
|
|
30
|
+
sa.Column("user_id", sa.String(), nullable=True),
|
|
31
|
+
sa.Column("name", sa.String(), nullable=False),
|
|
32
|
+
sa.Column(
|
|
33
|
+
"created_at",
|
|
34
|
+
sa.DateTime(),
|
|
35
|
+
nullable=False,
|
|
36
|
+
server_default=sa.func.now(),
|
|
37
|
+
),
|
|
38
|
+
sa.PrimaryKeyConstraint("task_id"),
|
|
39
|
+
)
|
|
40
|
+
op.create_index("ix_task_tree_tree", "task_tree", ["tree"])
|
|
41
|
+
op.create_index("ix_task_tree_user_id", "task_tree", ["user_id"])
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def downgrade():
|
|
45
|
+
op.drop_index("ix_task_tree_user_id", table_name="task_tree")
|
|
46
|
+
op.drop_index("ix_task_tree_tree", table_name="task_tree")
|
|
47
|
+
op.drop_table("task_tree")
|
|
@@ -84,7 +84,7 @@ from .resources.repositories import RepositoriesResource, RepositoryResource
|
|
|
84
84
|
from .resources.search import SearchIndexResource, SearchResource
|
|
85
85
|
from .resources.sources import SourceResource, SourcesResource
|
|
86
86
|
from .resources.tags import TagResource, TagsResource
|
|
87
|
-
from .resources.tasks import TaskResource
|
|
87
|
+
from .resources.tasks import TaskListResource, TaskResource
|
|
88
88
|
from .resources.timeline import (
|
|
89
89
|
FamilyTimelineResource,
|
|
90
90
|
PersonTimelineResource,
|
|
@@ -110,6 +110,7 @@ from .resources.trees import (
|
|
|
110
110
|
CheckTreeResource,
|
|
111
111
|
DisableTreeResource,
|
|
112
112
|
EnableTreeResource,
|
|
113
|
+
TreeConfigResource,
|
|
113
114
|
TreeResource,
|
|
114
115
|
TreesResource,
|
|
115
116
|
UpgradeTreeSchemaResource,
|
|
@@ -316,6 +317,12 @@ register_endpt(
|
|
|
316
317
|
"migrate_tree",
|
|
317
318
|
tags=["Trees"],
|
|
318
319
|
)
|
|
320
|
+
register_endpt(
|
|
321
|
+
TreeConfigResource,
|
|
322
|
+
"/trees/<string:tree_id>/config",
|
|
323
|
+
"tree_config",
|
|
324
|
+
tags=["Trees"],
|
|
325
|
+
)
|
|
319
326
|
# Types
|
|
320
327
|
register_endpt(
|
|
321
328
|
CustomTypeResource, "/types/custom/<string:datatype>", "custom-type", tags=["Types"]
|
|
@@ -524,6 +531,7 @@ register_endpt(ConfigsResource, "/config/", "configs", tags=["Config"])
|
|
|
524
531
|
register_endpt(ConfigResource, "/config/<string:key>/", "config", tags=["Config"])
|
|
525
532
|
|
|
526
533
|
# Tasks
|
|
534
|
+
register_endpt(TaskListResource, "/tasks/", "tasks", tags=["Tasks"])
|
|
527
535
|
register_endpt(TaskResource, "/tasks/<string:task_id>", "task", tags=["Tasks"])
|
|
528
536
|
|
|
529
537
|
# Media files
|