fastapi-rtk 2.16.0__tar.gz → 2.17.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 (350) hide show
  1. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/PKG-INFO +1 -1
  2. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/__init__.py +13 -0
  3. fastapi_rtk-2.17.0/fastapi_rtk/_version.py +1 -0
  4. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/agent_docs/guide/backend.md +2 -2
  5. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/api/__init__.py +13 -0
  6. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/api/base_api.py +14 -4
  7. fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/__init__.py +19 -0
  8. fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/model_rest_api.py +2322 -0
  9. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_params.py → fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/params.py +1 -1
  10. fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/__init__.py +25 -0
  11. fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_add_service.py +99 -0
  12. fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_bulk_service.py +59 -0
  13. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_delete_mixin.py → fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_delete_service.py +36 -77
  14. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_download_mixin.py → fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_download_service.py +69 -71
  15. fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_edit_service.py +123 -0
  16. fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_file_service.py +85 -0
  17. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_info_mixin.py → fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_info_service.py +86 -97
  18. fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_list_service.py +99 -0
  19. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_columns_mixin.py → fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_schema_service.py +95 -80
  20. fastapi_rtk-2.17.0/fastapi_rtk/api/model_rest_api/services/_show_service.py +76 -0
  21. fastapi_rtk-2.16.0/fastapi_rtk/backends/sqla/extensions/audit/_decorators_mixin.py → fastapi_rtk-2.17.0/fastapi_rtk/backends/sqla/extensions/audit/_decorators_service.py +38 -64
  22. fastapi_rtk-2.16.0/fastapi_rtk/backends/sqla/extensions/audit/_lifecycle_mixin.py → fastapi_rtk-2.17.0/fastapi_rtk/backends/sqla/extensions/audit/_lifecycle_service.py +79 -120
  23. fastapi_rtk-2.16.0/fastapi_rtk/backends/sqla/extensions/audit/_processing_mixin.py → fastapi_rtk-2.17.0/fastapi_rtk/backends/sqla/extensions/audit/_processing_service.py +51 -56
  24. fastapi_rtk-2.17.0/fastapi_rtk/backends/sqla/extensions/audit/audit.py +715 -0
  25. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/interface.py +3 -1
  26. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/fastapi_react_toolkit.py +2 -2
  27. fastapi_rtk-2.17.0/fastapi_rtk/security/sqla/security_manager/__init__.py +4 -0
  28. fastapi_rtk-2.16.0/fastapi_rtk/security/sqla/security_manager/__init__.py → fastapi_rtk-2.17.0/fastapi_rtk/security/sqla/security_manager/security_manager.py +1 -1
  29. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/lazy.py +18 -5
  30. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/api/model_rest_api/test_init.py +18 -3
  31. fastapi_rtk-2.17.0/tests/unit/api/model_rest_api/test_service_delegators.py +78 -0
  32. fastapi_rtk-2.17.0/tests/unit/backends/sqla/test_audit_service_delegators.py +81 -0
  33. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/security_manager/test_user_service.py +1 -1
  34. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_lazy.py +99 -0
  35. fastapi_rtk-2.16.0/fastapi_rtk/_version.py +0 -1
  36. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/__init__.py +0 -1322
  37. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_add_mixin.py +0 -135
  38. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_bulk_mixin.py +0 -97
  39. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_edit_mixin.py +0 -176
  40. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_file_mixin.py +0 -131
  41. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_list_mixin.py +0 -119
  42. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_show_mixin.py +0 -97
  43. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_typed_base.py +0 -215
  44. fastapi_rtk-2.16.0/fastapi_rtk/api/model_rest_api/_upload_mixin.py +0 -62
  45. fastapi_rtk-2.16.0/fastapi_rtk/backends/sqla/extensions/audit/audit.py +0 -255
  46. fastapi_rtk-2.16.0/tests/unit/api/model_rest_api/test_typed_base_consistency.py +0 -104
  47. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/.gitignore +0 -0
  48. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/LICENSE +0 -0
  49. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/README.md +0 -0
  50. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/agent_docs/adapters/agents-md/AGENTS.md +0 -0
  51. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/agent_docs/adapters/claude/skill.frontmatter +0 -0
  52. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/agent_docs/guide/frontend.md +0 -0
  53. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/agent_docs/guide/legacy.md +0 -0
  54. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/agent_docs/guide/overview.md +0 -0
  55. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/apis/__init__.py +0 -0
  56. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/apis/info.py +0 -0
  57. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/apis/license.py +0 -0
  58. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/__init__.py +0 -0
  59. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/auth.py +0 -0
  60. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/hashers/__init__.py +0 -0
  61. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/hashers/pbkdf2.py +0 -0
  62. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/hashers/scrypt.py +0 -0
  63. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/ldap.py +0 -0
  64. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/password_helpers/__init__.py +0 -0
  65. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/password_helpers/fab.py +0 -0
  66. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/strategies/__init__.py +0 -0
  67. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/strategies/config.py +0 -0
  68. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/strategies/db.py +0 -0
  69. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/auth/strategies/jwt.py +0 -0
  70. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/__init__.py +0 -0
  71. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/generic/__init__.py +0 -0
  72. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/generic/column.py +0 -0
  73. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/generic/db.py +0 -0
  74. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/generic/exceptions.py +0 -0
  75. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/generic/filters.py +0 -0
  76. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/generic/interface.py +0 -0
  77. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/generic/model.py +0 -0
  78. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/generic/session.py +0 -0
  79. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/__init__.py +0 -0
  80. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/column.py +0 -0
  81. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/db.py +0 -0
  82. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/exceptions.py +0 -0
  83. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/extensions/__init__.py +0 -0
  84. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/extensions/audit/__init__.py +0 -0
  85. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/extensions/audit/_logger.py +0 -0
  86. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/extensions/audit/types.py +0 -0
  87. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/__init__.py +0 -0
  88. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/filters.py +0 -0
  89. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/geometry_converter.py +0 -0
  90. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/filters.py +0 -0
  91. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/interface.py +0 -0
  92. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/model.py +0 -0
  93. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/backends/sqla/session.py +0 -0
  94. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/__init__.py +0 -0
  95. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/cache.py +0 -0
  96. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/db.py +0 -0
  97. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/file_manager.py +0 -0
  98. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/filter.py +0 -0
  99. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/loop_manager.py +0 -0
  100. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/model.py +0 -0
  101. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/session.py +0 -0
  102. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/bases/user_cache.py +0 -0
  103. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/caches/__init__.py +0 -0
  104. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/caches/cache.py +0 -0
  105. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/caches/serializers.py +0 -0
  106. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/caches/storages.py +0 -0
  107. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/__init__.py +0 -0
  108. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/cli.py +0 -0
  109. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/__init__.py +0 -0
  110. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/_security_crypto.py +0 -0
  111. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/agent/__init__.py +0 -0
  112. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/agent/adapters/__init__.py +0 -0
  113. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/agent/adapters/agents_md.py +0 -0
  114. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/agent/adapters/claude.py +0 -0
  115. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/agent/base.py +0 -0
  116. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/agent/docs.py +0 -0
  117. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/db/__init__.py +0 -0
  118. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/db/templates/fastapi/README +0 -0
  119. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/db/templates/fastapi/alembic.ini.mako +0 -0
  120. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/db/templates/fastapi/env.py +0 -0
  121. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/db/templates/fastapi/script.py.mako +0 -0
  122. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/README +0 -0
  123. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/alembic.ini.mako +0 -0
  124. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/env.py +0 -0
  125. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/script.py.mako +0 -0
  126. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/export.py +0 -0
  127. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/security.py +0 -0
  128. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/commands/translate.py +0 -0
  129. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/const.py +0 -0
  130. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/decorators.py +0 -0
  131. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/types.py +0 -0
  132. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/cli/utils.py +0 -0
  133. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/config.py +0 -0
  134. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/const.py +0 -0
  135. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/db.py +0 -0
  136. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/decorators.py +0 -0
  137. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/dependencies.py +0 -0
  138. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/exceptions.py +0 -0
  139. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/file_managers/__init__.py +0 -0
  140. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/file_managers/file_manager.py +0 -0
  141. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/file_managers/image_manager.py +0 -0
  142. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/file_managers/s3_file_manager.py +0 -0
  143. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/file_managers/s3_image_manager.py +0 -0
  144. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/filters.py +0 -0
  145. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/globals.py +0 -0
  146. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/__init__.py +0 -0
  147. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/babel/__init__.py +0 -0
  148. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/babel/cli.py +0 -0
  149. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/babel/config.py +0 -0
  150. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/babel.cfg +0 -0
  151. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/lazy_text.py +0 -0
  152. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/messages.pot +0 -0
  153. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.mo +0 -0
  154. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.po +0 -0
  155. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.mo +0 -0
  156. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.po +0 -0
  157. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/loop_managers/__init__.py +0 -0
  158. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/loop_managers/loop_manager.py +0 -0
  159. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/manager.py +0 -0
  160. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/middlewares.py +0 -0
  161. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/mixins.py +0 -0
  162. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/models.py +0 -0
  163. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/py.typed +0 -0
  164. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/registry.py +0 -0
  165. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/routers.py +0 -0
  166. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/schemas.py +0 -0
  167. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/__init__.py +0 -0
  168. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/__init__.py +0 -0
  169. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/apis.py +0 -0
  170. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/models.py +0 -0
  171. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/security_manager/_builtin_role_service.py +0 -0
  172. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/security_manager/_entities.py +0 -0
  173. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/security_manager/_exception_filters.py +0 -0
  174. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/security_manager/_export.py +0 -0
  175. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/security_manager/_import.py +0 -0
  176. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/security_manager/_permission_service.py +0 -0
  177. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/security_manager/_results.py +0 -0
  178. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/security_manager/_role_service.py +0 -0
  179. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/security_manager/_user_service.py +0 -0
  180. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/security/sqla/user_cache.py +0 -0
  181. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/setting.py +0 -0
  182. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/types.py +0 -0
  183. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/__init__.py +0 -0
  184. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/async_task_runner.py +0 -0
  185. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/class_factory.py +0 -0
  186. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/csv_json_converter.py +0 -0
  187. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/deep_merge.py +0 -0
  188. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/extender_mixin.py +0 -0
  189. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/flask_appbuilder_utils.py +0 -0
  190. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/formatter.py +0 -0
  191. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/hooks.py +0 -0
  192. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/merge_schema.py +0 -0
  193. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/multiple_async_contexts.py +0 -0
  194. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/pydantic.py +0 -0
  195. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/run_utils.py +0 -0
  196. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/self_dependencies.py +0 -0
  197. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/smartdefaultdict.py +0 -0
  198. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/sqla.py +0 -0
  199. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/timezone.py +0 -0
  200. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/update_signature.py +0 -0
  201. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/utils/use_default_when_none.py +0 -0
  202. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/fastapi_rtk/version.py +0 -0
  203. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/pyproject.toml +0 -0
  204. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/conftest.py +0 -0
  205. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/docker-compose.gis.yml +0 -0
  206. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/__init__.py +0 -0
  207. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/api/__init__.py +0 -0
  208. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/api/test_add_edit_relation_response.py +0 -0
  209. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/api/test_model_rest_api.py +0 -0
  210. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/apis/__init__.py +0 -0
  211. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/apis/test_info_callable_schema.py +0 -0
  212. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/apis/test_info_contract.py +0 -0
  213. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/auth/__init__.py +0 -0
  214. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/auth/test_auth_flow.py +0 -0
  215. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/auth/test_oauth.py +0 -0
  216. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/conftest.py +0 -0
  217. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/file_managers/__init__.py +0 -0
  218. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/file_managers/test_file_routes.py +0 -0
  219. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/security/__init__.py +0 -0
  220. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/security/sqla/__init__.py +0 -0
  221. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/security/sqla/conftest.py +0 -0
  222. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/security/sqla/test_permission_service.py +0 -0
  223. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/security/sqla/test_role_service.py +0 -0
  224. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/security/sqla/test_security_manager.py +0 -0
  225. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/security/sqla/test_user_service.py +0 -0
  226. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/integration/test_app_smoke.py +0 -0
  227. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/__init__.py +0 -0
  228. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/api/__init__.py +0 -0
  229. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/api/conftest.py +0 -0
  230. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/api/model_rest_api/__init__.py +0 -0
  231. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/api/model_rest_api/test_columns.py +0 -0
  232. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/api/model_rest_api/test_file_mixin.py +0 -0
  233. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/api/test_base_api.py +0 -0
  234. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/apis/__init__.py +0 -0
  235. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/apis/test_info.py +0 -0
  236. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/apis/test_license.py +0 -0
  237. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/__init__.py +0 -0
  238. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/hashers/__init__.py +0 -0
  239. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/hashers/test_pbkdf2.py +0 -0
  240. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/hashers/test_scrypt.py +0 -0
  241. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/password_helpers/__init__.py +0 -0
  242. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/password_helpers/test_fab.py +0 -0
  243. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/strategies/__init__.py +0 -0
  244. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/strategies/test_config.py +0 -0
  245. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/strategies/test_db.py +0 -0
  246. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/strategies/test_jwt.py +0 -0
  247. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/auth/test_auth.py +0 -0
  248. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/__init__.py +0 -0
  249. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/generic/__init__.py +0 -0
  250. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/generic/test_column.py +0 -0
  251. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/generic/test_db.py +0 -0
  252. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/generic/test_exceptions.py +0 -0
  253. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/generic/test_filters.py +0 -0
  254. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/generic/test_interface.py +0 -0
  255. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/generic/test_model.py +0 -0
  256. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/generic/test_session.py +0 -0
  257. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/__init__.py +0 -0
  258. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/conftest.py +0 -0
  259. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/test_audit.py +0 -0
  260. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/test_audit_types.py +0 -0
  261. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/test_column.py +0 -0
  262. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/test_db.py +0 -0
  263. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/test_filters.py +0 -0
  264. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/test_geoalchemy2.py +0 -0
  265. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/test_interface.py +0 -0
  266. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/test_model.py +0 -0
  267. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/backends/sqla/test_session.py +0 -0
  268. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/bases/__init__.py +0 -0
  269. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/bases/test_db.py +0 -0
  270. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/bases/test_file_manager.py +0 -0
  271. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/bases/test_filter.py +0 -0
  272. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/bases/test_interface.py +0 -0
  273. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/bases/test_model.py +0 -0
  274. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/bases/test_session.py +0 -0
  275. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/__init__.py +0 -0
  276. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/commands/__init__.py +0 -0
  277. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/commands/conftest.py +0 -0
  278. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/commands/test_db.py +0 -0
  279. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/commands/test_export.py +0 -0
  280. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/commands/test_security.py +0 -0
  281. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/commands/test_security_crypto.py +0 -0
  282. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/commands/test_translate.py +0 -0
  283. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/conftest.py +0 -0
  284. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/test_cli.py +0 -0
  285. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/test_decorators.py +0 -0
  286. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/test_types.py +0 -0
  287. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/cli/test_utils.py +0 -0
  288. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/file_managers/__init__.py +0 -0
  289. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/file_managers/conftest.py +0 -0
  290. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/file_managers/test_file_manager.py +0 -0
  291. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/file_managers/test_image_manager.py +0 -0
  292. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/file_managers/test_s3_file_manager.py +0 -0
  293. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/file_managers/test_s3_image_manager.py +0 -0
  294. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/lang/__init__.py +0 -0
  295. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/lang/test_babel_cli.py +0 -0
  296. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/lang/test_babel_config.py +0 -0
  297. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/lang/test_lazy_text.py +0 -0
  298. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/__init__.py +0 -0
  299. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/__init__.py +0 -0
  300. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/conftest.py +0 -0
  301. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/security_manager/__init__.py +0 -0
  302. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/security_manager/test_builtin_role_service.py +0 -0
  303. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/security_manager/test_entities.py +0 -0
  304. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/security_manager/test_permission_service.py +0 -0
  305. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/security_manager/test_results.py +0 -0
  306. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/security_manager/test_role_service.py +0 -0
  307. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/test_apis.py +0 -0
  308. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/test_models.py +0 -0
  309. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/security/sqla/test_security_manager.py +0 -0
  310. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_caches.py +0 -0
  311. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_config.py +0 -0
  312. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_const.py +0 -0
  313. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_db.py +0 -0
  314. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_decorators.py +0 -0
  315. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_dependencies.py +0 -0
  316. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_exceptions.py +0 -0
  317. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_fastapi_react_toolkit.py +0 -0
  318. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_filters.py +0 -0
  319. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_globals.py +0 -0
  320. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_manager.py +0 -0
  321. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_middlewares.py +0 -0
  322. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_mixins.py +0 -0
  323. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_models.py +0 -0
  324. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_registry.py +0 -0
  325. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_routers.py +0 -0
  326. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_schemas.py +0 -0
  327. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_setting.py +0 -0
  328. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_types.py +0 -0
  329. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_user_cache.py +0 -0
  330. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/test_version.py +0 -0
  331. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/__init__.py +0 -0
  332. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_async_task_runner.py +0 -0
  333. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_class_factory.py +0 -0
  334. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_csv_json_converter.py +0 -0
  335. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_deep_merge.py +0 -0
  336. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_extender_mixin.py +0 -0
  337. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_flask_appbuilder_utils.py +0 -0
  338. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_formatter.py +0 -0
  339. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_hooks.py +0 -0
  340. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_merge_schema.py +0 -0
  341. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_multiple_async_contexts.py +0 -0
  342. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_pydantic.py +0 -0
  343. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_run_utils.py +0 -0
  344. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_self_dependencies.py +0 -0
  345. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_smartdefaultdict.py +0 -0
  346. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_sqla.py +0 -0
  347. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_timezone.py +0 -0
  348. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_update_signature.py +0 -0
  349. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/tests/unit/utils/test_use_default_when_none.py +0 -0
  350. {fastapi_rtk-2.16.0 → fastapi_rtk-2.17.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: fastapi-rtk
3
- Version: 2.16.0
3
+ Version: 2.17.0
4
4
  Summary: A package that provides a set of tools to build a FastAPI application with a Class-Based CRUD API.
5
5
  Project-URL: Homepage, https://codeberg.org/datatactics/fastapi-rtk
6
6
  Project-URL: Issues, https://codeberg.org/datatactics/fastapi-rtk/issues
@@ -37,6 +37,19 @@ __all__ = [
37
37
  # .api
38
38
  "BaseApi",
39
39
  "ModelRestApi",
40
+ "Params",
41
+ "P_ID",
42
+ "P_IDS",
43
+ "P_Q",
44
+ "P_SESSION",
45
+ "P_BODY",
46
+ "P_ITEM",
47
+ "P_ITEMS",
48
+ "PARAM_Q",
49
+ "PARAM_IDS_Q_SESSION_ITEMS",
50
+ "PARAM_ID_SESSION",
51
+ "PARAM_ID_SESSION_ITEM",
52
+ "PARAM_BODY_SESSION",
40
53
  # .auth
41
54
  "FABPasswordHelper",
42
55
  "Authenticator",
@@ -0,0 +1 @@
1
+ __version__ = "2.17.0"
@@ -268,7 +268,7 @@ class ItemApi(ModelRestApi):
268
268
  async def post_delete(self, item: Item, params): ...
269
269
  ```
270
270
 
271
- To reject a request from a pre-hook, `raise fastapi.HTTPException(...)` (a bare `raise ValueError(...)` becomes HTTP 500; there is no auto-translation). To override the response without rejecting, return a non-`Model` value from the hook, and the dispatcher treats that value as the response and skips the rest of the pipeline (see `_add_mixin.py:75-81` and `_edit_mixin.py:100-106`).
271
+ To reject a request from a pre-hook, `raise fastapi.HTTPException(...)` (a bare `raise ValueError(...)` becomes HTTP 500; there is no auto-translation). To override the response without rejecting, return a non-`Model` value from the hook, and the dispatcher treats that value as the response and skips the rest of the pipeline (see `services/_add_service.py:66-72` and `services/_edit_service.py:90-96`).
272
272
 
273
273
  Use hooks for normalization, cross-field validation, audit logging, cache invalidation: anything policy, not wire format (use Pydantic for that at the schema level).
274
274
 
@@ -634,7 +634,7 @@ Reach for the builtin-role inspectors only when the answer must be synchronous a
634
634
  | Every role's grants, or the role names | `sm.get_role_and_api_permission_tuples_from_builtin_roles()`, `sm.get_roles_from_builtin_roles()` |
635
635
  | The resolved roles dict | `sm.builtin_roles` (a caching `lazy` over `Setting.ROLES`) |
636
636
 
637
- Two properties to plan around. A role absent from `ROLES` reads as no access from every one of them, the admin role and any runtime-created role included, which is exactly the gap `check_user_access` closes by falling through to the DB. And `builtin_roles` is a caching `lazy` (`security_manager/__init__.py:84`; `cache=True` is the default, `utils/lazy.py`), so a mutation of the config dict after first access is not picked up: an override file loaded at startup is fine, and a test that varies the roles patches the resolved `sm.builtin_roles` attribute instead.
637
+ Two properties to plan around. A role absent from `ROLES` reads as no access from every one of them, the admin role and any runtime-created role included, which is exactly the gap `check_user_access` closes by falling through to the DB. And `builtin_roles` is a caching `lazy` (`security_manager/security_manager.py:84`; `cache=True` is the default, `utils/lazy.py`), so a mutation of the config dict after first access is not picked up: an override file loaded at startup is fine, and a test that varies the roles patches the resolved `sm.builtin_roles` attribute instead.
638
638
 
639
639
  `current_permissions(api)` (`dependencies.py:68`) answers a wider question: every permission name the CURRENT user holds on one Api, intersected with that Api's `base_permissions`. It is a dependency factory, so calling it directly is `await current_permissions(self)()` inside `async with db.session():` (it reads `db.current_session`, which that context manager sets). Use it to hand a whole permission set to a template or a response; use `check_user_access` for a single yes/no on a user you already hold.
640
640
 
@@ -5,5 +5,18 @@ from .model_rest_api import *
5
5
  __all__ = [
6
6
  "BaseApi",
7
7
  "ModelRestApi",
8
+ "Params",
9
+ "P_ID",
10
+ "P_IDS",
11
+ "P_Q",
12
+ "P_SESSION",
13
+ "P_BODY",
14
+ "P_ITEM",
15
+ "P_ITEMS",
16
+ "PARAM_Q",
17
+ "PARAM_IDS_Q_SESSION_ITEMS",
18
+ "PARAM_ID_SESSION",
19
+ "PARAM_ID_SESSION_ITEM",
20
+ "PARAM_BODY_SESSION",
8
21
  "SQLAInterface", # Just for backward compatibility, not recommended to use directly
9
22
  ]
@@ -74,13 +74,13 @@ class BaseApi:
74
74
  Example:
75
75
  base_permissions = ["can_get", "can_post"]
76
76
  """
77
- permissions: list[str] = lazy(lambda self: [])
77
+ permissions: list[str] = lazy(list[str], with_target=False)
78
78
  """
79
79
  List of permissions for the API.
80
80
 
81
81
  DO NOT MODIFY UNLESS YOU KNOW WHAT YOU ARE DOING.
82
82
  """
83
- messages: list[str] = lazy(lambda self: [])
83
+ messages: list[str] = lazy(list[str], with_target=False)
84
84
  """
85
85
  List of messages to log when the API is added to the toolkit.
86
86
 
@@ -93,7 +93,17 @@ class BaseApi:
93
93
  collections.abc.Callable,
94
94
  dict[str, typing.Any],
95
95
  ]
96
- ] = lazy(lambda self: [])
96
+ ] = lazy(
97
+ list[
98
+ tuple[
99
+ collections.abc.Callable,
100
+ dict[str, typing.Any],
101
+ collections.abc.Callable,
102
+ dict[str, typing.Any],
103
+ ]
104
+ ],
105
+ with_target=False,
106
+ )
97
107
  """
98
108
  List of routes to register. Each item is a tuple of (router_func, router_parameters, route_function, metadata). When the API Router is integrated into the FastAPI app, these routes will be registered.
99
109
 
@@ -103,7 +113,7 @@ class BaseApi:
103
113
  """
104
114
  The FastAPIReactToolkit object. Automatically set when the API is added to the toolkit.
105
115
  """
106
- cache: dict[str, typing.Any] = lazy(lambda self: dict())
116
+ cache: dict[str, typing.Any] = lazy(dict[str, typing.Any], with_target=False)
107
117
  """
108
118
  The cache for the API.
109
119
 
@@ -0,0 +1,19 @@
1
+ from .model_rest_api import ModelRestApi
2
+ from .params import *
3
+
4
+ __all__ = [
5
+ "ModelRestApi",
6
+ "Params",
7
+ "P_ID",
8
+ "P_IDS",
9
+ "P_Q",
10
+ "P_SESSION",
11
+ "P_BODY",
12
+ "P_ITEM",
13
+ "P_ITEMS",
14
+ "PARAM_Q",
15
+ "PARAM_IDS_Q_SESSION_ITEMS",
16
+ "PARAM_ID_SESSION",
17
+ "PARAM_ID_SESSION_ITEM",
18
+ "PARAM_BODY_SESSION",
19
+ ]