data-syncmaster 0.2.3__tar.gz → 0.2.4__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 (221) hide show
  1. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/PKG-INFO +6 -5
  2. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/pyproject.toml +11 -9
  3. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/__init__.py +1 -1
  4. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/v1/runs.py +0 -2
  5. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/middlewares/monitoring/metrics.py +1 -1
  6. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/middlewares/session.py +4 -4
  7. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/auth/jwt.py +5 -1
  8. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/server/session.py +20 -3
  9. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/spark.py +28 -36
  10. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/LICENSE.txt +0 -0
  11. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/README.rst +0 -0
  12. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/__init__.py +0 -0
  13. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/factory.py +0 -0
  14. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/README +0 -0
  15. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/__main__.py +0 -0
  16. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/alembic.ini +0 -0
  17. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/env.py +0 -0
  18. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/script.py.mako +0 -0
  19. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2023-11-23_0001_create_user_table.py +0 -0
  20. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2023-11-23_0002_create_group_table.py +0 -0
  21. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2023-11-23_0003_create_queue_table.py +0 -0
  22. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2023-11-23_0004_create_connection_table.py +0 -0
  23. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2023-11-23_0005_create_user_group_table.py +0 -0
  24. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2023-11-23_0006_create_auth_data_table.py +0 -0
  25. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2023-11-23_0007_create_transfer_table.py +0 -0
  26. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2023-11-23_0008_create_run_table.py +0 -0
  27. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2023-11-23_0009_create_celery_tables.py +0 -0
  28. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2024-10-07_0010_add_pg_trgm_extension.py +0 -0
  29. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/2024-11-01_0011_create_apscheduler_table.py +0 -0
  30. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/migrations/versions/__init__.py +0 -0
  31. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/mixins/__init__.py +0 -0
  32. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/mixins/resource.py +0 -0
  33. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/mixins/timestamp.py +0 -0
  34. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/__init__.py +0 -0
  35. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/apscheduler_job.py +0 -0
  36. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/auth_data.py +0 -0
  37. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/base.py +0 -0
  38. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/connection.py +0 -0
  39. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/group.py +0 -0
  40. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/queue.py +0 -0
  41. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/run.py +0 -0
  42. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/transfer.py +0 -0
  43. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/models/user.py +0 -0
  44. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/__init__.py +0 -0
  45. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/base.py +0 -0
  46. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/connection.py +0 -0
  47. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/credentials_repository.py +0 -0
  48. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/group.py +0 -0
  49. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/queue.py +0 -0
  50. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/repository_with_owner.py +0 -0
  51. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/run.py +0 -0
  52. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/transfer.py +0 -0
  53. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/user.py +0 -0
  54. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/repositories/utils.py +0 -0
  55. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/db/utils.py +0 -0
  56. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/dto/__init__.py +0 -0
  57. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/dto/connections.py +0 -0
  58. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/dto/runs.py +0 -0
  59. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/dto/transfers.py +0 -0
  60. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/dto/transfers_resources.py +0 -0
  61. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/dto/transfers_strategy.py +0 -0
  62. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/errors/__init__.py +0 -0
  63. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/errors/base.py +0 -0
  64. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/errors/registration.py +0 -0
  65. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/errors/schemas/__init__.py +0 -0
  66. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/errors/schemas/bad_request.py +0 -0
  67. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/errors/schemas/invalid_request.py +0 -0
  68. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/errors/schemas/not_authorized.py +0 -0
  69. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/__init__.py +0 -0
  70. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/auth.py +0 -0
  71. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/base.py +0 -0
  72. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/connection.py +0 -0
  73. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/credentials.py +0 -0
  74. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/group.py +0 -0
  75. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/queue.py +0 -0
  76. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/redirect.py +0 -0
  77. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/run.py +0 -0
  78. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/transfer.py +0 -0
  79. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/exceptions/user.py +0 -0
  80. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/scheduler/__init__.py +0 -0
  81. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/scheduler/__main__.py +0 -0
  82. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/scheduler/celery.py +0 -0
  83. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/scheduler/settings/__init__.py +0 -0
  84. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/scheduler/transfer_fetcher.py +0 -0
  85. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/scheduler/transfer_job_manager.py +0 -0
  86. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/scheduler/utils.py +0 -0
  87. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/__init__.py +0 -0
  88. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/ping.py +0 -0
  89. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/__init__.py +0 -0
  90. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/auth/__init__.py +0 -0
  91. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/auth/basic.py +0 -0
  92. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/auth/s3.py +0 -0
  93. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/auth/samba.py +0 -0
  94. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/auth/token.py +0 -0
  95. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connection_types.py +0 -0
  96. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/__init__.py +0 -0
  97. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/clickhouse.py +0 -0
  98. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/connection.py +0 -0
  99. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/connection_base.py +0 -0
  100. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/ftp.py +0 -0
  101. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/ftps.py +0 -0
  102. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/hdfs.py +0 -0
  103. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/hive.py +0 -0
  104. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/mssql.py +0 -0
  105. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/mysql.py +0 -0
  106. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/oracle.py +0 -0
  107. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/postgres.py +0 -0
  108. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/s3.py +0 -0
  109. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/samba.py +0 -0
  110. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/sftp.py +0 -0
  111. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/connections/webdav.py +0 -0
  112. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/file_formats.py +0 -0
  113. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/groups.py +0 -0
  114. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/page.py +0 -0
  115. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/queue.py +0 -0
  116. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfer_types.py +0 -0
  117. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/__init__.py +0 -0
  118. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/db.py +0 -0
  119. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file/__init__.py +0 -0
  120. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file/base.py +0 -0
  121. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file/ftp.py +0 -0
  122. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file/ftps.py +0 -0
  123. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file/hdfs.py +0 -0
  124. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file/s3.py +0 -0
  125. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file/samba.py +0 -0
  126. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file/sftp.py +0 -0
  127. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file/webdav.py +0 -0
  128. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/file_format.py +0 -0
  129. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/resources.py +0 -0
  130. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/run.py +0 -0
  131. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/strategy.py +0 -0
  132. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/transformations/__init__.py +0 -0
  133. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/transformations/dataframe_columns_filter.py +0 -0
  134. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/transformations/dataframe_rows_filter.py +0 -0
  135. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transfers/transformations/file_metadata_filter.py +0 -0
  136. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/transformation_types.py +0 -0
  137. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/types.py +0 -0
  138. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/schemas/v1/users.py +0 -0
  139. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/__init__.py +0 -0
  140. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/__main__.py +0 -0
  141. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/__init__.py +0 -0
  142. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/monitoring.py +0 -0
  143. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/router.py +0 -0
  144. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/v1/__init__.py +0 -0
  145. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/v1/auth.py +0 -0
  146. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/v1/connections.py +0 -0
  147. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/v1/groups.py +0 -0
  148. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/v1/queue.py +0 -0
  149. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/v1/router.py +0 -0
  150. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/v1/transfers.py +0 -0
  151. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/api/v1/users.py +0 -0
  152. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/dependencies/__init__.py +0 -0
  153. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/dependencies/get_access_token.py +0 -0
  154. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/dependencies/stub.py +0 -0
  155. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/handler.py +0 -0
  156. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/middlewares/__init__.py +0 -0
  157. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/middlewares/cors.py +0 -0
  158. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/middlewares/monitoring/__init__.py +0 -0
  159. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/middlewares/openapi.py +0 -0
  160. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/middlewares/request_id.py +0 -0
  161. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/middlewares/static_files.py +0 -0
  162. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/providers/__init__.py +0 -0
  163. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/providers/auth/__init__.py +0 -0
  164. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/providers/auth/base_provider.py +0 -0
  165. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/providers/auth/dummy_provider.py +0 -0
  166. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/providers/auth/keycloak_provider.py +0 -0
  167. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/scripts/export_openapi_schema.py +0 -0
  168. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/scripts/manage_superusers.py +0 -0
  169. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/services/__init__.py +0 -0
  170. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/services/get_user.py +0 -0
  171. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/services/unit_of_work.py +0 -0
  172. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/__init__.py +0 -0
  173. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/auth/__init__.py +0 -0
  174. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/auth/dummy.py +0 -0
  175. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/auth/keycloak.py +0 -0
  176. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/server/__init__.py +0 -0
  177. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/server/cors.py +0 -0
  178. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/server/monitoring.py +0 -0
  179. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/server/openapi.py +0 -0
  180. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/server/request_id.py +0 -0
  181. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/settings/server/static_files.py +0 -0
  182. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/utils/__init__.py +0 -0
  183. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/utils/jwt.py +0 -0
  184. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/utils/slug.py +0 -0
  185. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/server/utils/state.py +0 -0
  186. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/settings/__init__.py +0 -0
  187. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/settings/broker.py +0 -0
  188. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/settings/credentials.py +0 -0
  189. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/settings/database.py +0 -0
  190. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/settings/log/__init__.py +0 -0
  191. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/settings/log/colored.yml +0 -0
  192. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/settings/log/json.yml +0 -0
  193. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/settings/log/plain.yml +0 -0
  194. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/__init__.py +0 -0
  195. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/base.py +0 -0
  196. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/celery.py +0 -0
  197. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/controller.py +0 -0
  198. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/__init__.py +0 -0
  199. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/base.py +0 -0
  200. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/db/__init__.py +0 -0
  201. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/db/base.py +0 -0
  202. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/db/clickhouse.py +0 -0
  203. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/db/hive.py +0 -0
  204. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/db/mssql.py +0 -0
  205. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/db/mysql.py +0 -0
  206. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/db/oracle.py +0 -0
  207. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/db/postgres.py +0 -0
  208. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/__init__.py +0 -0
  209. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/base.py +0 -0
  210. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/ftp.py +0 -0
  211. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/ftps.py +0 -0
  212. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/hdfs.py +0 -0
  213. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/local_df.py +0 -0
  214. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/remote_df.py +0 -0
  215. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/s3.py +0 -0
  216. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/samba.py +0 -0
  217. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/sftp.py +0 -0
  218. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/handlers/file/webdav.py +0 -0
  219. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/settings/__init__.py +0 -0
  220. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/settings/hwm_store.py +0 -0
  221. {data_syncmaster-0.2.3 → data_syncmaster-0.2.4}/syncmaster/worker/transfer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: data-syncmaster
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Syncmaster REST API + Worker
5
5
  License: Apache-2.0
6
6
  Keywords: Syncmaster,REST,API,Worker,Spark,Transfer,ETL
@@ -35,11 +35,12 @@ Requires-Dist: fastapi (>=0.115.12,<0.116.0) ; extra == "server"
35
35
  Requires-Dist: horizon-hwm-store (>=1.1.2,<2.0.0) ; extra == "worker"
36
36
  Requires-Dist: itsdangerous (>=2.2.0,<3.0.0) ; extra == "server"
37
37
  Requires-Dist: jinja2 (>=3.1.6,<4.0.0) ; extra == "server" or extra == "worker"
38
- Requires-Dist: onetl[all] (>=0.13.4,<0.14.0) ; extra == "worker"
38
+ Requires-Dist: onetl[all] (>=0.13.5,<0.14.0) ; extra == "worker"
39
39
  Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0) ; extra == "server" or extra == "worker"
40
- Requires-Dist: pydantic (>=2.11.1,<3.0.0)
40
+ Requires-Dist: pydantic (>=2.11.7,<3.0.0)
41
41
  Requires-Dist: pydantic-settings (>=2.8.1,<3.0.0) ; extra == "server" or extra == "worker" or extra == "scheduler"
42
42
  Requires-Dist: pyjwt (>=2.10.1,<3.0.0) ; extra == "server"
43
+ Requires-Dist: pyspark (<4.0.0) ; extra == "worker"
43
44
  Requires-Dist: python-json-logger ; extra == "server" or extra == "worker" or extra == "scheduler"
44
45
  Requires-Dist: python-keycloak (>=5.3.1,<6.0.0) ; extra == "server"
45
46
  Requires-Dist: python-multipart (>=0.0.20,<0.0.21) ; extra == "server"
@@ -47,8 +48,8 @@ Requires-Dist: pyyaml ; extra == "server" or extra == "worker" or extra == "sche
47
48
  Requires-Dist: sqlalchemy (>=2.0.40,<3.0.0) ; extra == "server" or extra == "worker" or extra == "scheduler"
48
49
  Requires-Dist: sqlalchemy-utils (>=0.41.2,<0.42.0) ; extra == "server" or extra == "worker" or extra == "scheduler"
49
50
  Requires-Dist: starlette-exporter (>=0.23.0,<0.24.0) ; extra == "server"
50
- Requires-Dist: uuid6 (>=2024.7.10,<2025.0.0) ; extra == "server" or extra == "worker"
51
- Requires-Dist: uvicorn (>=0.34.0,<0.35.0) ; extra == "server"
51
+ Requires-Dist: uuid6 (>=2025.0.0,<2026.0.0) ; extra == "server" or extra == "worker"
52
+ Requires-Dist: uvicorn (>=0.34,<0.36) ; extra == "server"
52
53
  Project-URL: CI/CD, https://github.com/MobileTeleSystems/syncmaster/actions
53
54
  Project-URL: Documentation, https://syncmaster.readthedocs.io
54
55
  Project-URL: Homepage, https://github.com/MobileTeleSystems/syncmaster
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "data-syncmaster"
7
- version = "0.2.3"
7
+ version = "0.2.4"
8
8
  license = "Apache-2.0"
9
9
  description = "Syncmaster REST API + Worker"
10
10
  authors = ["DataOps.ETL <onetools@mts.ru>"]
@@ -44,22 +44,23 @@ exclude = [
44
44
 
45
45
  [tool.poetry.dependencies]
46
46
  python = "^3.11"
47
- pydantic = "^2.11.1"
47
+ pydantic = "^2.11.7"
48
48
  pydantic-settings = { version = "^2.8.1", optional = true }
49
49
  sqlalchemy = { version = "^2.0.40", optional = true }
50
50
  sqlalchemy-utils = { version = "^0.41.2", optional = true }
51
51
  fastapi = { version = "^0.115.12", optional = true}
52
52
  asgi-correlation-id = {version = "^4.3.4", optional = true}
53
- uvicorn = { version = "^0.34.0", optional = true }
53
+ uvicorn = { version = ">=0.34,<0.36", optional = true }
54
54
  alembic = { version = "^1.15.2", optional = true }
55
55
  pyjwt = { version = "^2.10.1", optional = true }
56
56
  jinja2 = { version = "^3.1.6", optional = true }
57
57
  python-multipart = { version = "^0.0.20", optional = true }
58
58
  celery = { version = "^5.5.0", optional = true }
59
- onetl = { version = "^0.13.4", extras = ["all"], optional = true }
59
+ onetl = { version = "^0.13.5", extras = ["all"], optional = true }
60
+ pyspark = { version = "<4.0.0", optional = true }
60
61
  pyyaml = { version = "*", optional = true }
61
62
  psycopg2-binary = { version = "^2.9.10", optional = true }
62
- uuid6 = {version = "^2024.7.10", optional = true}
63
+ uuid6 = {version = "^2025.0.0", optional = true}
63
64
  coloredlogs = {version = "*", optional = true}
64
65
  python-json-logger = {version = "*", optional = true}
65
66
  asyncpg = { version = "^0.30.0", optional = true }
@@ -99,6 +100,7 @@ worker = [
99
100
  "sqlalchemy-utils",
100
101
  "celery",
101
102
  "onetl",
103
+ "pyspark",
102
104
  "asgi-correlation-id",
103
105
  "jinja2",
104
106
  "psycopg2-binary",
@@ -124,15 +126,15 @@ scheduler = [
124
126
  [tool.poetry.group.test.dependencies]
125
127
  pytest = "^8.3.5"
126
128
  httpx = "^0.28.1"
127
- pytest-asyncio = "^0.26.0"
129
+ pytest-asyncio = ">=0.26.0,<1.0"
128
130
  pytest-randomly = "^3.15.0"
129
131
  pytest-rerunfailures = "^15.0"
130
132
  pytest-deadfixtures = "^2.2.1"
131
133
  pytest-mock = "^3.14.0"
132
134
  pytest-lazy-fixtures = "^1.1.1"
133
- faker = "^37.1.0"
134
- coverage = "^7.8.0"
135
- gevent = "^24.11.1"
135
+ faker = "^37.4.0"
136
+ coverage = "^7.9.1"
137
+ gevent = ">=24.11.1,<26.0.0"
136
138
  responses = "^0.25.7"
137
139
 
138
140
  [tool.poetry.group.dev.dependencies]
@@ -1,6 +1,6 @@
1
1
  # SPDX-FileCopyrightText: 2023-2024 MTS PJSC
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
- _raw_version = "0.2.3"
4
+ _raw_version = "0.2.4"
5
5
  # version always contain only release number like 0.0.1
6
6
  __version__ = ".".join(_raw_version.split(".")[:3]) # noqa: WPS410
@@ -23,7 +23,6 @@ from syncmaster.schemas.v1.transfers.run import (
23
23
  from syncmaster.server.dependencies import Stub
24
24
  from syncmaster.server.services.get_user import get_user
25
25
  from syncmaster.server.services.unit_of_work import UnitOfWork
26
- from syncmaster.server.settings import ServerAppSettings as Settings
27
26
 
28
27
  router = APIRouter(tags=["Runs"], responses=get_error_responses())
29
28
 
@@ -82,7 +81,6 @@ async def read_run(
82
81
  @router.post("/runs")
83
82
  async def start_run( # noqa: WPS217
84
83
  create_run_data: CreateRunSchema,
85
- settings: Annotated[Settings, Depends(Stub(Settings))],
86
84
  celery: Annotated[Celery, Depends(Stub(Celery))],
87
85
  unit_of_work: UnitOfWork = Depends(UnitOfWork),
88
86
  current_user: User = Depends(get_user(is_active=True)),
@@ -37,7 +37,7 @@ def apply_monitoring_metrics_middleware(app: FastAPI, settings: MonitoringSettin
37
37
  app.add_middleware(
38
38
  PrometheusMiddleware,
39
39
  app_name=slugify(app.title),
40
- skip_paths=skip_paths,
40
+ skip_paths=sorted(skip_paths),
41
41
  **settings.model_dump(exclude={"enabled", "skip_paths"}),
42
42
  )
43
43
  app.include_router(router)
@@ -10,8 +10,8 @@ from syncmaster.server.settings.server.session import SessionSettings
10
10
  def apply_session_middleware(app: FastAPI, settings: SessionSettings) -> FastAPI:
11
11
  """Add SessionMiddleware middleware to the application."""
12
12
 
13
- app.add_middleware(
14
- SessionMiddleware,
15
- **settings.model_dump(),
16
- )
13
+ settings_dict = settings.model_dump(exclude={"secret_key"})
14
+ settings_dict["secret_key"] = settings.secret_key.get_secret_value()
15
+
16
+ app.add_middleware(SessionMiddleware, **settings_dict)
17
17
  return app
@@ -23,7 +23,11 @@ class JWTSettings(BaseModel):
23
23
  """
24
24
  Secret key for signing JWT tokens.
25
25
 
26
- Can be any string. It is recommended to generate random value for every application instance.
26
+ Can be any string. It is recommended to generate random value for every application instance, e.g.:
27
+
28
+ .. code:: shell
29
+
30
+ pwgen 32 1
27
31
  """,
28
32
  ),
29
33
  )
@@ -2,7 +2,9 @@
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
 
5
- from pydantic import BaseModel, ConfigDict, Field
5
+ import textwrap
6
+
7
+ from pydantic import BaseModel, ConfigDict, Field, SecretStr
6
8
 
7
9
 
8
10
  class SessionSettings(BaseModel):
@@ -38,8 +40,23 @@ class SessionSettings(BaseModel):
38
40
 
39
41
  """
40
42
 
41
- secret_key: str = Field(description="A random string for signing cookies.")
42
- session_cookie: str | None = Field(default="session", description="Name of the session cookie.")
43
+ secret_key: SecretStr = Field(
44
+ description=textwrap.dedent(
45
+ """
46
+ Secret key for encrypting cookies.
47
+
48
+ Can be any string. It is recommended to generate random value for every application instance, e.g.:
49
+
50
+ .. code:: shell
51
+
52
+ pwgen 32 1
53
+ """,
54
+ ),
55
+ )
56
+ session_cookie: str | None = Field(
57
+ default="session",
58
+ description="Name of the session cookie. Change this if there are multiple application under the same domain.",
59
+ )
43
60
  max_age: int | None = Field(
44
61
  default=14 * 24 * 60 * 60,
45
62
  description="Session expiry time in seconds. Defaults to 2 weeks.",
@@ -47,44 +47,41 @@ def get_worker_spark_session(
47
47
  return spark_builder.getOrCreate()
48
48
 
49
49
 
50
- def get_packages(connection_type: str) -> list[str]: # noqa: WPS212
50
+ def get_packages(connection_types: set[str]) -> list[str]: # noqa: WPS212
51
51
  import pyspark
52
52
  from onetl.connection import MSSQL, Clickhouse, MySQL, Oracle, Postgres, SparkS3
53
53
  from onetl.file.format import XML, Excel
54
54
 
55
+ spark_version = pyspark.__version__
55
56
  # excel version is hardcoded due to https://github.com/nightscape/spark-excel/issues/902
56
57
  file_formats_spark_packages: list[str] = [
57
- *XML.get_packages(spark_version=pyspark.__version__),
58
+ *XML.get_packages(spark_version=spark_version),
58
59
  *Excel.get_packages(spark_version="3.5.1"),
59
60
  ]
60
61
 
61
- if connection_type == "postgres":
62
- return Postgres.get_packages()
63
- if connection_type == "oracle":
64
- return Oracle.get_packages()
65
- if connection_type == "clickhouse":
66
- return [
67
- "io.github.mtsongithub.doetl:spark-dialect-extension_2.12:0.0.2",
68
- *Clickhouse.get_packages(),
69
- ]
70
- if connection_type == "mssql":
71
- return MSSQL.get_packages()
72
- if connection_type == "mysql":
73
- return MySQL.get_packages()
74
- if connection_type == "s3":
75
- import pyspark
76
-
77
- spark_version = pyspark.__version__
78
- return SparkS3.get_packages(spark_version=spark_version) + file_formats_spark_packages
79
-
80
- if connection_type in ("hdfs", "sftp", "ftp", "ftps", "samba", "webdav"):
81
- return file_formats_spark_packages
82
-
83
- # If the database type does not require downloading .jar packages
84
- return []
85
-
86
-
87
- def get_excluded_packages(db_type: str) -> list[str]:
62
+ result = []
63
+ if connection_types & {"postgres", "all"}:
64
+ result.extend(Postgres.get_packages())
65
+ if connection_types & {"oracle", "all"}:
66
+ result.extend(Oracle.get_packages())
67
+ if connection_types & {"clickhouse", "all"}:
68
+ result.append("io.github.mtsongithub.doetl:spark-dialect-extension_2.12:0.0.2")
69
+ result.extend(Clickhouse.get_packages())
70
+ if connection_types & {"mssql", "all"}:
71
+ result.extend(MSSQL.get_packages())
72
+ if connection_types & {"mysql", "all"}:
73
+ result.extend(MySQL.get_packages())
74
+
75
+ if connection_types & {"s3", "all"}:
76
+ result.extend(SparkS3.get_packages(spark_version=spark_version))
77
+
78
+ if connection_types & {"s3", "hdfs", "sftp", "ftp", "ftps", "samba", "webdav", "all"}:
79
+ result.extend(file_formats_spark_packages)
80
+
81
+ return result
82
+
83
+
84
+ def get_excluded_packages() -> list[str]:
88
85
  from onetl.connection import SparkS3
89
86
 
90
87
  return SparkS3.get_exclude_packages()
@@ -95,16 +92,11 @@ def get_spark_session_conf(
95
92
  target: ConnectionDTO,
96
93
  resources: dict,
97
94
  ) -> dict:
98
- maven_packages: list[str] = []
99
- excluded_packages: list[str] = []
100
-
101
- for db_type in source, target:
102
- maven_packages.extend(get_packages(connection_type=db_type.type)) # type: ignore
103
- excluded_packages.extend(get_excluded_packages(db_type=db_type.type)) # type: ignore
95
+ maven_packages: list[str] = get_packages(connection_types={source.type, target.type})
96
+ excluded_packages: list[str] = get_excluded_packages()
104
97
 
105
98
  memory_mb = math.ceil(resources["ram_bytes_per_task"] / 1024 / 1024)
106
99
  config = {
107
- "spark.jars.packages": ",".join(maven_packages),
108
100
  "spark.sql.pyspark.jvmStacktrace.enabled": "true",
109
101
  "spark.hadoop.mapreduce.fileoutputcommitter.marksuccessfuljobs": "false",
110
102
  "spark.executor.cores": resources["cpu_cores_per_task"],