fastapi-rtk 2.1.2__tar.gz → 2.1.3__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 (297) hide show
  1. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/PKG-INFO +1 -1
  2. fastapi_rtk-2.1.3/fastapi_rtk/_version.py +1 -0
  3. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/base_api.py +20 -12
  4. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/api/test_base_api.py +23 -0
  5. fastapi_rtk-2.1.2/fastapi_rtk/_version.py +0 -1
  6. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/.gitignore +0 -0
  7. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/LICENSE +0 -0
  8. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/README.md +0 -0
  9. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/__init__.py +0 -0
  10. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/__init__.py +0 -0
  11. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/__init__.py +0 -0
  12. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_add_mixin.py +0 -0
  13. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_bulk_mixin.py +0 -0
  14. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_columns.py +0 -0
  15. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_delete_mixin.py +0 -0
  16. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_download_mixin.py +0 -0
  17. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_edit_mixin.py +0 -0
  18. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_file_mixin.py +0 -0
  19. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_info_mixin.py +0 -0
  20. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_list_mixin.py +0 -0
  21. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_params.py +0 -0
  22. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_show_mixin.py +0 -0
  23. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/api/model_rest_api/_upload_mixin.py +0 -0
  24. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/apis/__init__.py +0 -0
  25. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/apis/info.py +0 -0
  26. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/apis/license.py +0 -0
  27. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/__init__.py +0 -0
  28. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/auth.py +0 -0
  29. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/hashers/__init__.py +0 -0
  30. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/hashers/pbkdf2.py +0 -0
  31. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/hashers/scrypt.py +0 -0
  32. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/ldap.py +0 -0
  33. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/password_helpers/__init__.py +0 -0
  34. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/password_helpers/fab.py +0 -0
  35. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/strategies/__init__.py +0 -0
  36. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/strategies/config.py +0 -0
  37. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/strategies/db.py +0 -0
  38. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/auth/strategies/jwt.py +0 -0
  39. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/__init__.py +0 -0
  40. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/generic/__init__.py +0 -0
  41. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/generic/column.py +0 -0
  42. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/generic/db.py +0 -0
  43. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/generic/exceptions.py +0 -0
  44. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/generic/filters.py +0 -0
  45. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/generic/interface.py +0 -0
  46. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/generic/model.py +0 -0
  47. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/generic/session.py +0 -0
  48. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/__init__.py +0 -0
  49. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/column.py +0 -0
  50. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/db.py +0 -0
  51. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/exceptions.py +0 -0
  52. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/__init__.py +0 -0
  53. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/audit/__init__.py +0 -0
  54. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/audit/_decorators_mixin.py +0 -0
  55. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/audit/_lifecycle_mixin.py +0 -0
  56. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/audit/_logger.py +0 -0
  57. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/audit/_processing_mixin.py +0 -0
  58. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/audit/audit.py +0 -0
  59. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/audit/types.py +0 -0
  60. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/__init__.py +0 -0
  61. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/filters.py +0 -0
  62. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/geometry_converter.py +0 -0
  63. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/filters.py +0 -0
  64. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/interface.py +0 -0
  65. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/model.py +0 -0
  66. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/backends/sqla/session.py +0 -0
  67. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/bases/__init__.py +0 -0
  68. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/bases/db.py +0 -0
  69. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/bases/file_manager.py +0 -0
  70. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/bases/filter.py +0 -0
  71. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/bases/interface.py +0 -0
  72. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/bases/model.py +0 -0
  73. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/bases/session.py +0 -0
  74. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/__init__.py +0 -0
  75. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/cli.py +0 -0
  76. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/__init__.py +0 -0
  77. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/_security_crypto.py +0 -0
  78. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/db/__init__.py +0 -0
  79. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/db/templates/fastapi/README +0 -0
  80. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/db/templates/fastapi/alembic.ini.mako +0 -0
  81. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/db/templates/fastapi/env.py +0 -0
  82. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/db/templates/fastapi/script.py.mako +0 -0
  83. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/README +0 -0
  84. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/alembic.ini.mako +0 -0
  85. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/env.py +0 -0
  86. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/script.py.mako +0 -0
  87. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/export.py +0 -0
  88. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/security.py +0 -0
  89. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/commands/translate.py +0 -0
  90. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/const.py +0 -0
  91. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/decorators.py +0 -0
  92. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/types.py +0 -0
  93. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/cli/utils.py +0 -0
  94. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/config.py +0 -0
  95. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/const.py +0 -0
  96. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/db.py +0 -0
  97. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/decorators.py +0 -0
  98. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/dependencies.py +0 -0
  99. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/exceptions.py +0 -0
  100. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/fastapi_react_toolkit.py +0 -0
  101. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/file_managers/__init__.py +0 -0
  102. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/file_managers/file_manager.py +0 -0
  103. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/file_managers/image_manager.py +0 -0
  104. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/file_managers/s3_file_manager.py +0 -0
  105. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/file_managers/s3_image_manager.py +0 -0
  106. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/filters.py +0 -0
  107. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/globals.py +0 -0
  108. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/__init__.py +0 -0
  109. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/babel/__init__.py +0 -0
  110. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/babel/cli.py +0 -0
  111. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/babel/config.py +0 -0
  112. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/babel.cfg +0 -0
  113. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/lazy_text.py +0 -0
  114. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/messages.pot +0 -0
  115. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.mo +0 -0
  116. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.po +0 -0
  117. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.mo +0 -0
  118. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.po +0 -0
  119. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/manager.py +0 -0
  120. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/middlewares.py +0 -0
  121. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/mixins.py +0 -0
  122. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/models.py +0 -0
  123. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/py.typed +0 -0
  124. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/registry.py +0 -0
  125. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/routers.py +0 -0
  126. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/schemas.py +0 -0
  127. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/__init__.py +0 -0
  128. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/__init__.py +0 -0
  129. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/apis.py +0 -0
  130. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/models.py +0 -0
  131. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/security_manager/__init__.py +0 -0
  132. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/security_manager/_association_mixin.py +0 -0
  133. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/security_manager/_builtin_role_mixin.py +0 -0
  134. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/security_manager/_cleanup_mixin.py +0 -0
  135. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/security_manager/_exception_filters.py +0 -0
  136. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/security_manager/_export.py +0 -0
  137. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/security_manager/_import.py +0 -0
  138. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/security_manager/_role_mixin.py +0 -0
  139. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/security/sqla/security_manager/_user_mixin.py +0 -0
  140. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/setting.py +0 -0
  141. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/types.py +0 -0
  142. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/__init__.py +0 -0
  143. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/async_task_runner.py +0 -0
  144. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/class_factory.py +0 -0
  145. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/csv_json_converter.py +0 -0
  146. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/deep_merge.py +0 -0
  147. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/extender_mixin.py +0 -0
  148. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/flask_appbuilder_utils.py +0 -0
  149. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/formatter.py +0 -0
  150. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/hooks.py +0 -0
  151. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/lazy.py +0 -0
  152. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/merge_schema.py +0 -0
  153. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/multiple_async_contexts.py +0 -0
  154. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/pydantic.py +0 -0
  155. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/run_utils.py +0 -0
  156. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/self_dependencies.py +0 -0
  157. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/smartdefaultdict.py +0 -0
  158. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/sqla.py +0 -0
  159. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/timezone.py +0 -0
  160. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/update_signature.py +0 -0
  161. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/utils/use_default_when_none.py +0 -0
  162. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/fastapi_rtk/version.py +0 -0
  163. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/pyproject.toml +0 -0
  164. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/conftest.py +0 -0
  165. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/docker-compose.gis.yml +0 -0
  166. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/__init__.py +0 -0
  167. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/api/__init__.py +0 -0
  168. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/api/test_model_rest_api.py +0 -0
  169. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/apis/__init__.py +0 -0
  170. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/apis/test_info_contract.py +0 -0
  171. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/auth/__init__.py +0 -0
  172. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/auth/test_auth_flow.py +0 -0
  173. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/auth/test_oauth.py +0 -0
  174. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/conftest.py +0 -0
  175. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/file_managers/__init__.py +0 -0
  176. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/file_managers/test_file_routes.py +0 -0
  177. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/security/__init__.py +0 -0
  178. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/security/sqla/__init__.py +0 -0
  179. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/security/sqla/test_security_manager.py +0 -0
  180. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/integration/test_app_smoke.py +0 -0
  181. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/__init__.py +0 -0
  182. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/api/__init__.py +0 -0
  183. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/api/conftest.py +0 -0
  184. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/api/model_rest_api/__init__.py +0 -0
  185. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/api/model_rest_api/test_columns.py +0 -0
  186. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/api/model_rest_api/test_file_mixin.py +0 -0
  187. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/api/model_rest_api/test_init.py +0 -0
  188. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/apis/__init__.py +0 -0
  189. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/apis/test_info.py +0 -0
  190. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/apis/test_license.py +0 -0
  191. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/__init__.py +0 -0
  192. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/hashers/__init__.py +0 -0
  193. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/hashers/test_pbkdf2.py +0 -0
  194. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/hashers/test_scrypt.py +0 -0
  195. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/password_helpers/__init__.py +0 -0
  196. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/password_helpers/test_fab.py +0 -0
  197. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/strategies/__init__.py +0 -0
  198. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/strategies/test_config.py +0 -0
  199. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/strategies/test_db.py +0 -0
  200. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/strategies/test_jwt.py +0 -0
  201. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/auth/test_auth.py +0 -0
  202. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/__init__.py +0 -0
  203. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/generic/__init__.py +0 -0
  204. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/generic/test_column.py +0 -0
  205. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/generic/test_db.py +0 -0
  206. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/generic/test_exceptions.py +0 -0
  207. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/generic/test_filters.py +0 -0
  208. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/generic/test_interface.py +0 -0
  209. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/generic/test_model.py +0 -0
  210. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/generic/test_session.py +0 -0
  211. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/__init__.py +0 -0
  212. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/conftest.py +0 -0
  213. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/test_audit.py +0 -0
  214. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/test_audit_types.py +0 -0
  215. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/test_column.py +0 -0
  216. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/test_db.py +0 -0
  217. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/test_filters.py +0 -0
  218. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/test_geoalchemy2.py +0 -0
  219. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/test_interface.py +0 -0
  220. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/test_model.py +0 -0
  221. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/backends/sqla/test_session.py +0 -0
  222. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/bases/__init__.py +0 -0
  223. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/bases/test_db.py +0 -0
  224. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/bases/test_file_manager.py +0 -0
  225. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/bases/test_filter.py +0 -0
  226. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/bases/test_interface.py +0 -0
  227. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/bases/test_model.py +0 -0
  228. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/bases/test_session.py +0 -0
  229. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/__init__.py +0 -0
  230. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/commands/__init__.py +0 -0
  231. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/commands/conftest.py +0 -0
  232. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/commands/test_db.py +0 -0
  233. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/commands/test_export.py +0 -0
  234. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/commands/test_security.py +0 -0
  235. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/commands/test_security_crypto.py +0 -0
  236. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/commands/test_translate.py +0 -0
  237. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/conftest.py +0 -0
  238. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/test_cli.py +0 -0
  239. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/test_decorators.py +0 -0
  240. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/test_types.py +0 -0
  241. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/cli/test_utils.py +0 -0
  242. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/file_managers/__init__.py +0 -0
  243. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/file_managers/conftest.py +0 -0
  244. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/file_managers/test_file_manager.py +0 -0
  245. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/file_managers/test_image_manager.py +0 -0
  246. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/file_managers/test_s3_file_manager.py +0 -0
  247. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/file_managers/test_s3_image_manager.py +0 -0
  248. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/lang/__init__.py +0 -0
  249. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/lang/test_babel_cli.py +0 -0
  250. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/lang/test_babel_config.py +0 -0
  251. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/lang/test_lazy_text.py +0 -0
  252. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/security/__init__.py +0 -0
  253. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/security/sqla/__init__.py +0 -0
  254. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/security/sqla/conftest.py +0 -0
  255. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/security/sqla/test_apis.py +0 -0
  256. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/security/sqla/test_models.py +0 -0
  257. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/security/sqla/test_security_manager.py +0 -0
  258. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_config.py +0 -0
  259. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_const.py +0 -0
  260. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_db.py +0 -0
  261. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_decorators.py +0 -0
  262. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_dependencies.py +0 -0
  263. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_exceptions.py +0 -0
  264. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_fastapi_react_toolkit.py +0 -0
  265. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_filters.py +0 -0
  266. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_globals.py +0 -0
  267. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_manager.py +0 -0
  268. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_middlewares.py +0 -0
  269. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_mixins.py +0 -0
  270. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_models.py +0 -0
  271. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_registry.py +0 -0
  272. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_routers.py +0 -0
  273. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_schemas.py +0 -0
  274. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_setting.py +0 -0
  275. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_types.py +0 -0
  276. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/test_version.py +0 -0
  277. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/__init__.py +0 -0
  278. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_async_task_runner.py +0 -0
  279. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_class_factory.py +0 -0
  280. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_csv_json_converter.py +0 -0
  281. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_deep_merge.py +0 -0
  282. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_extender_mixin.py +0 -0
  283. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_flask_appbuilder_utils.py +0 -0
  284. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_formatter.py +0 -0
  285. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_hooks.py +0 -0
  286. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_lazy.py +0 -0
  287. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_merge_schema.py +0 -0
  288. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_multiple_async_contexts.py +0 -0
  289. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_pydantic.py +0 -0
  290. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_run_utils.py +0 -0
  291. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_self_dependencies.py +0 -0
  292. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_smartdefaultdict.py +0 -0
  293. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_sqla.py +0 -0
  294. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_timezone.py +0 -0
  295. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_update_signature.py +0 -0
  296. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/tests/unit/utils/test_use_default_when_none.py +0 -0
  297. {fastapi_rtk-2.1.2 → fastapi_rtk-2.1.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-rtk
3
- Version: 2.1.2
3
+ Version: 2.1.3
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
@@ -0,0 +1 @@
1
+ __version__ = "2.1.3"
@@ -201,24 +201,27 @@ class BaseApi:
201
201
  self, metadata["response_model_str"]
202
202
  )
203
203
 
204
- extra_dependencies = []
205
- if metadata.get("dependencies"):
206
- extra_dependencies = metadata["dependencies"]
207
- if extra_dependencies and not data.get("dependencies"):
208
- data["dependencies"] = []
209
- for dep in extra_dependencies:
204
+ resolved_dependencies = []
205
+ for dep in metadata.get("dependencies") or []:
210
206
  func, kwargs = dep
211
207
  if kwargs:
208
+ # Resolve into a fresh dict; the source kwargs live in
209
+ # the shared registry and must stay un-mutated so other
210
+ # instances of the same Api class can resolve them too.
211
+ resolved_kwargs = {}
212
212
  for key, val in kwargs.items():
213
213
  if val == ":self":
214
- kwargs[key] = self
215
- elif val.startswith(":f"):
214
+ resolved_kwargs[key] = self
215
+ elif isinstance(val, str) and val.startswith(":f"):
216
216
  prop = val.split(".")[1]
217
- kwargs[key] = metadata[prop]
218
- func = Depends(func(**kwargs))
217
+ resolved_kwargs[key] = metadata[prop]
218
+ else:
219
+ resolved_kwargs[key] = val
220
+ resolved_dependencies.append(
221
+ Depends(func(**resolved_kwargs))
222
+ )
219
223
  else:
220
- func = Depends(func)
221
- data["dependencies"].append(func)
224
+ resolved_dependencies.append(Depends(func))
222
225
 
223
226
  path, methods, rest_data = (
224
227
  data["path"],
@@ -226,6 +229,11 @@ class BaseApi:
226
229
  {k: v for k, v in data.items() if k != "methods"},
227
230
  )
228
231
 
232
+ if resolved_dependencies:
233
+ rest_data["dependencies"] = (
234
+ list(data.get("dependencies") or []) + resolved_dependencies
235
+ )
236
+
229
237
  self.messages.append(
230
238
  f"Registering route {self.router.prefix}{path} {methods}"
231
239
  )
@@ -130,6 +130,29 @@ class TestExposedRoutes:
130
130
  api = TierMsgApi()
131
131
  assert any("Registering route" in m for m in api.messages)
132
132
 
133
+ def test_protect_dependency_resolved_per_instance(self):
134
+ # Regression: resolving @protect's ":self" / ":f" placeholders must not
135
+ # mutate the shared registry metadata. Otherwise a second instance of
136
+ # the same class crashes ("... object has no attribute 'startswith'")
137
+ # and dependencies accumulate across registrations.
138
+ class TierSharedApi(BaseApi):
139
+ base_permissions = [f"{PERMISSION_PREFIX}read"]
140
+
141
+ @expose("/shared", methods=["GET"])
142
+ @protect()
143
+ @permission_name("read")
144
+ async def shared(self):
145
+ return {}
146
+
147
+ for _ in range(2):
148
+ api = TierSharedApi()
149
+ deps = [
150
+ rest_data.get("dependencies")
151
+ for _, rest_data, _, _ in api.routes_to_register
152
+ if rest_data["path"] == "/shared"
153
+ ]
154
+ assert deps and len(deps[0]) == 1
155
+
133
156
 
134
157
  class TestPriorityRoutes:
135
158
  def test_priority_routes_reordered(self):
@@ -1 +0,0 @@
1
- __version__ = "2.1.2"
File without changes
File without changes
File without changes
File without changes