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.
Files changed (247) hide show
  1. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.devcontainer/Dockerfile +7 -2
  2. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/workflows/test.yml +8 -0
  3. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/PKG-INFO +1 -1
  4. gramps_webapi-3.13.0/alembic_users/versions/b2c3d4e5f6a7_add_tree_config_column.py +30 -0
  5. gramps_webapi-3.13.0/alembic_users/versions/c1d2e3f4a5b6_merge_task_tree_and_tree_config.py +21 -0
  6. gramps_webapi-3.13.0/alembic_users/versions/f3a1c8e92b47_add_task_tree_table.py +47 -0
  7. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/_version.py +1 -1
  8. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/__init__.py +9 -1
  9. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/filters.py +203 -131
  10. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/history.py +8 -0
  11. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/schemas.py +4 -0
  12. gramps_webapi-3.13.0/gramps_webapi/api/resources/tasks.py +193 -0
  13. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/transactions.py +6 -1
  14. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/trees.py +60 -6
  15. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/util.py +12 -1
  16. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/tasks.py +48 -4
  17. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/__init__.py +39 -0
  18. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/const.py +1 -0
  19. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/undodb.py +4 -9
  20. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/PKG-INFO +1 -1
  21. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/SOURCES.txt +3 -0
  22. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_filters.py +224 -0
  23. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_history.py +37 -0
  24. gramps_webapi-3.13.0/tests/test_endpoints/test_tasks.py +353 -0
  25. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_transactions.py +49 -0
  26. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_trees.py +135 -0
  27. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_import_util.py +177 -3
  28. gramps_webapi-3.12.2/gramps_webapi/api/resources/tasks.py +0 -83
  29. gramps_webapi-3.12.2/tests/test_endpoints/test_tasks.py +0 -79
  30. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.devcontainer/devcontainer.json +0 -0
  31. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.devcontainer/docker-compose.yml +0 -0
  32. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.dockerignore +0 -0
  33. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.editorconfig +0 -0
  34. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.flake8 +0 -0
  35. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  36. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  37. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  38. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/workflows/base-image.yml +0 -0
  39. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/workflows/image.yml +0 -0
  40. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.github/workflows/pypi.yml +0 -0
  41. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.gitignore +0 -0
  42. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.pre-commit-config.yaml +0 -0
  43. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.pylintrc +0 -0
  44. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.vscode/extensions.json +0 -0
  45. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.vscode/launch.json +0 -0
  46. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.vscode/settings.json +0 -0
  47. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/.vscode/tasks.json +0 -0
  48. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/CLAUDE.md +0 -0
  49. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/CODE_OF_CONDUCT.md +0 -0
  50. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/CONTRIBUTING.md +0 -0
  51. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/Dockerfile +0 -0
  52. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/Dockerfile.base +0 -0
  53. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/LICENSE +0 -0
  54. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/MANIFEST.in +0 -0
  55. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/README.md +0 -0
  56. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic.ini +0 -0
  57. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/README +0 -0
  58. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/env.py +0 -0
  59. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/script.py.mako +0 -0
  60. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/2082445b0769_add_oidc_accounts_table_for_secure_.py +0 -0
  61. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/22c8d1fba959_add_trees_enabled.py +0 -0
  62. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/66e56620891a_add_trees_table.py +0 -0
  63. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/84960b7d968c_use_bigint_for_quota_media.py +0 -0
  64. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/a8e57fe0d82e_add_columns_for_ai_quota.py +0 -0
  65. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/b0582f54029c_use_bigint_for_usage_media.py +0 -0
  66. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/c89728e71264_.py +0 -0
  67. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/e176543c72a8_add_tree_column_to_user.py +0 -0
  68. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/alembic_users/versions/e5e738d09fa7_added_configuration_table.py +0 -0
  69. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/docker-entrypoint.sh +0 -0
  70. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/__init__.py +0 -0
  71. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/__main__.py +0 -0
  72. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/auth.py +0 -0
  73. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/blueprint.py +0 -0
  74. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/cache.py +0 -0
  75. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/check.py +0 -0
  76. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/dna.py +0 -0
  77. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/emails.py +0 -0
  78. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/export.py +0 -0
  79. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/file.py +0 -0
  80. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/html.py +0 -0
  81. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/image.py +0 -0
  82. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/llm/__init__.py +0 -0
  83. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/llm/agent.py +0 -0
  84. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/llm/deps.py +0 -0
  85. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/llm/tools.py +0 -0
  86. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/media.py +0 -0
  87. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/media_importer.py +0 -0
  88. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/people_families_cache.py +0 -0
  89. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/ratelimiter.py +0 -0
  90. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/report.py +0 -0
  91. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/__init__.py +0 -0
  92. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/base.py +0 -0
  93. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/bookmarks.py +0 -0
  94. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/chat.py +0 -0
  95. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/citations.py +0 -0
  96. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/config.py +0 -0
  97. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/delete.py +0 -0
  98. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/dna.py +0 -0
  99. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/emit.py +0 -0
  100. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/events.py +0 -0
  101. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/export_media.py +0 -0
  102. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/exporters.py +0 -0
  103. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/face_detection.py +0 -0
  104. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/facts.py +0 -0
  105. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/families.py +0 -0
  106. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/file.py +0 -0
  107. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/holidays.py +0 -0
  108. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/import_media.py +0 -0
  109. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/importers.py +0 -0
  110. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/living.py +0 -0
  111. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/match.py +0 -0
  112. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/media.py +0 -0
  113. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/metadata.py +0 -0
  114. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/name_formats.py +0 -0
  115. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/name_groups.py +0 -0
  116. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/notes.py +0 -0
  117. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/objects.py +0 -0
  118. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/ocr.py +0 -0
  119. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/oidc.py +0 -0
  120. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/people.py +0 -0
  121. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/places.py +0 -0
  122. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/relations.py +0 -0
  123. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/reports.py +0 -0
  124. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/repositories.py +0 -0
  125. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/search.py +0 -0
  126. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/sort.py +0 -0
  127. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/sources.py +0 -0
  128. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/tags.py +0 -0
  129. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/timeline.py +0 -0
  130. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/token.py +0 -0
  131. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/translations.py +0 -0
  132. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/types.py +0 -0
  133. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/user.py +0 -0
  134. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/resources/ydna.py +0 -0
  135. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/s3.py +0 -0
  136. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/__init__.py +0 -0
  137. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/embeddings.py +0 -0
  138. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/indexer.py +0 -0
  139. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/text.py +0 -0
  140. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/search/text_semantic.py +0 -0
  141. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/telemetry.py +0 -0
  142. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/api/util.py +0 -0
  143. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/app.py +0 -0
  144. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/const.py +0 -0
  145. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/cookies.py +0 -0
  146. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/oidc.py +0 -0
  147. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/oidc_helpers.py +0 -0
  148. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/passwords.py +0 -0
  149. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/sql_guid.py +0 -0
  150. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/auth/token_blocklist.py +0 -0
  151. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/celery.py +0 -0
  152. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/config.py +0 -0
  153. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/data/empty_gramps_auth.cfg +0 -0
  154. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/data/example_gramps_auth.cfg +0 -0
  155. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/data/face_detection_yunet_2023mar.onnx +0 -0
  156. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/data/test_auth.cfg +0 -0
  157. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/dbloader.py +0 -0
  158. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/dbmanager.py +0 -0
  159. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/profiler.py +0 -0
  160. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/static/index.html +0 -0
  161. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/templates/confirmation.html +0 -0
  162. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/templates/reset_password.html +0 -0
  163. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/templates/reset_password_base.html +0 -0
  164. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/templates/reset_password_error.html +0 -0
  165. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/translogger.py +0 -0
  166. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/types.py +0 -0
  167. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/util/__init__.py +0 -0
  168. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/util/celery.py +0 -0
  169. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi/wsgi.py +0 -0
  170. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/dependency_links.txt +0 -0
  171. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/requires.txt +0 -0
  172. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/gramps_webapi.egg-info/top_level.txt +0 -0
  173. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/mypy.ini +0 -0
  174. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/pyproject.toml +0 -0
  175. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/requirements-dev.txt +0 -0
  176. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/scripts/s3_rename.py +0 -0
  177. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/scripts/start_dev_container.sh +0 -0
  178. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/semantic_index.txt +0 -0
  179. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/setup.cfg +0 -0
  180. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/setup.py +0 -0
  181. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/__init__.py +0 -0
  182. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_cli.py +0 -0
  183. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_db.py +0 -0
  184. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_dna_match_parser.py +0 -0
  185. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_embeddings.py +0 -0
  186. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/__init__.py +0 -0
  187. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/checks.py +0 -0
  188. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_bookmarks.py +0 -0
  189. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_chat.py +0 -0
  190. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_citations.py +0 -0
  191. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_config.py +0 -0
  192. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_delete.py +0 -0
  193. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_dna.py +0 -0
  194. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_events.py +0 -0
  195. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_exporters.py +0 -0
  196. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_facts.py +0 -0
  197. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_families.py +0 -0
  198. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_file.py +0 -0
  199. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_holidays.py +0 -0
  200. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_import_media.py +0 -0
  201. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_importers.py +0 -0
  202. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_living.py +0 -0
  203. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_media.py +0 -0
  204. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_media_archive.py +0 -0
  205. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_metadata.py +0 -0
  206. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_name_formats.py +0 -0
  207. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_name_groups.py +0 -0
  208. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_notes.py +0 -0
  209. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_ocr.py +0 -0
  210. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_oidc.py +0 -0
  211. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_people.py +0 -0
  212. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_places.py +0 -0
  213. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_post.py +0 -0
  214. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_put.py +0 -0
  215. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_ready.py +0 -0
  216. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_relations.py +0 -0
  217. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_repair.py +0 -0
  218. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_reports.py +0 -0
  219. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_repositories.py +0 -0
  220. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_s3.py +0 -0
  221. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_search.py +0 -0
  222. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_sources.py +0 -0
  223. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_tags.py +0 -0
  224. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_timelines.py +0 -0
  225. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_token.py +0 -0
  226. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_translations.py +0 -0
  227. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_types.py +0 -0
  228. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_upload.py +0 -0
  229. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_user.py +0 -0
  230. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/test_ydna.py +0 -0
  231. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_endpoints/util.py +0 -0
  232. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_image.py +0 -0
  233. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_jwt.py +0 -0
  234. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_limiter.py +0 -0
  235. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_llm_tools.py +0 -0
  236. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_media_importer.py +0 -0
  237. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_migrate_grampsdb.py +0 -0
  238. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_oidc_auth.py +0 -0
  239. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_password.py +0 -0
  240. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_private_proxy.py +0 -0
  241. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_s3.py +0 -0
  242. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_sqlauth.py +0 -0
  243. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_telemetry.py +0 -0
  244. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_text.py +0 -0
  245. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_undodb.py +0 -0
  246. {gramps_webapi-3.12.2 → gramps_webapi-3.13.0}/tests/test_util.py +0 -0
  247. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gramps-webapi
3
- Version: 3.12.2
3
+ Version: 3.13.0
4
4
  Summary: A RESTful web API for the Gramps genealogical database.
5
5
  Author: Gramps Development Team
6
6
  Author-email: "David M. Straub" <straub@protonmail.com>
@@ -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")
@@ -19,4 +19,4 @@
19
19
 
20
20
  """Version information."""
21
21
 
22
- __version__ = "3.12.2"
22
+ __version__ = "3.13.0"
@@ -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