data-syncmaster 0.3.1__tar.gz → 0.3.2__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 (236) hide show
  1. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/PKG-INFO +18 -18
  2. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/README.rst +8 -8
  3. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/data_syncmaster.egg-info/PKG-INFO +18 -18
  4. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/data_syncmaster.egg-info/SOURCES.txt +1 -0
  5. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/data_syncmaster.egg-info/requires.txt +5 -5
  6. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/pyproject.toml +17 -16
  7. data_syncmaster-0.3.2/syncmaster/VERSION +1 -0
  8. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2023-11-23_0007_create_transfer_table.py +2 -4
  9. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2025-08-10_0012_update_ts.py +1 -2
  10. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/basic.py +1 -1
  11. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/iceberg_rest_s3_delegated/bearer.py +1 -1
  12. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/iceberg_rest_s3_delegated/oauth2_client_credentials.py +4 -1
  13. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/iceberg_rest_s3_direct/bearer.py +4 -1
  14. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/iceberg_rest_s3_direct/oauth2_client_credentials.py +4 -1
  15. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/s3.py +1 -1
  16. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/samba.py +1 -1
  17. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/iceberg.py +2 -2
  18. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/db.py +10 -2
  19. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file_format.py +12 -12
  20. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/transformations/__init__.py +4 -1
  21. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/transformations/dataframe_columns_filter.py +6 -6
  22. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/transformations/dataframe_rows_filter.py +24 -24
  23. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/transformations/file_metadata_filter.py +9 -9
  24. data_syncmaster-0.3.2/syncmaster/schemas/v1/transfers/transformations/sql.py +28 -0
  25. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transformation_types.py +1 -0
  26. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/db/base.py +19 -1
  27. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/base.py +6 -0
  28. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/local_df.py +10 -0
  29. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/remote_df.py +10 -0
  30. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/s3.py +10 -0
  31. data_syncmaster-0.3.1/syncmaster/VERSION +0 -1
  32. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/LICENSE.txt +0 -0
  33. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/data_syncmaster.egg-info/dependency_links.txt +0 -0
  34. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/data_syncmaster.egg-info/top_level.txt +0 -0
  35. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/setup.cfg +0 -0
  36. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/__init__.py +0 -0
  37. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/__init__.py +0 -0
  38. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/factory.py +0 -0
  39. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/__init__.py +0 -0
  40. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/__main__.py +0 -0
  41. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/alembic.ini +0 -0
  42. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/env.py +0 -0
  43. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2023-11-23_0001_create_user_table.py +0 -0
  44. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2023-11-23_0002_create_group_table.py +0 -0
  45. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2023-11-23_0003_create_queue_table.py +0 -0
  46. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2023-11-23_0004_create_connection_table.py +0 -0
  47. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2023-11-23_0005_create_user_group_table.py +0 -0
  48. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2023-11-23_0006_create_auth_data_table.py +0 -0
  49. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2023-11-23_0008_create_run_table.py +0 -0
  50. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2023-11-23_0009_create_celery_tables.py +0 -0
  51. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2024-10-07_0010_add_pg_trgm_extension.py +0 -0
  52. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/2024-11-01_0011_create_apscheduler_table.py +0 -0
  53. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/migrations/versions/__init__.py +0 -0
  54. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/mixins/__init__.py +0 -0
  55. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/mixins/resource.py +0 -0
  56. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/mixins/timestamp.py +0 -0
  57. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/__init__.py +0 -0
  58. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/apscheduler_job.py +0 -0
  59. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/auth_data.py +0 -0
  60. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/base.py +0 -0
  61. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/connection.py +0 -0
  62. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/group.py +0 -0
  63. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/queue.py +0 -0
  64. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/run.py +0 -0
  65. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/transfer.py +0 -0
  66. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/models/user.py +0 -0
  67. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/__init__.py +0 -0
  68. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/base.py +0 -0
  69. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/connection.py +0 -0
  70. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/credentials_repository.py +0 -0
  71. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/group.py +0 -0
  72. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/queue.py +0 -0
  73. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/repository_with_owner.py +0 -0
  74. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/run.py +0 -0
  75. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/search.py +0 -0
  76. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/transfer.py +0 -0
  77. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/user.py +0 -0
  78. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/repositories/utils.py +0 -0
  79. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/db/utils.py +0 -0
  80. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/dto/__init__.py +0 -0
  81. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/dto/connections.py +0 -0
  82. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/dto/runs.py +0 -0
  83. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/dto/transfers.py +0 -0
  84. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/dto/transfers_resources.py +0 -0
  85. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/dto/transfers_strategy.py +0 -0
  86. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/errors/__init__.py +0 -0
  87. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/errors/base.py +0 -0
  88. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/errors/registration.py +0 -0
  89. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/errors/schemas/__init__.py +0 -0
  90. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/errors/schemas/bad_request.py +0 -0
  91. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/errors/schemas/invalid_request.py +0 -0
  92. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/errors/schemas/not_authorized.py +0 -0
  93. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/__init__.py +0 -0
  94. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/auth.py +0 -0
  95. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/base.py +0 -0
  96. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/connection.py +0 -0
  97. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/credentials.py +0 -0
  98. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/group.py +0 -0
  99. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/queue.py +0 -0
  100. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/redirect.py +0 -0
  101. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/run.py +0 -0
  102. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/transfer.py +0 -0
  103. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/exceptions/user.py +0 -0
  104. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/scheduler/__init__.py +0 -0
  105. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/scheduler/__main__.py +0 -0
  106. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/scheduler/celery.py +0 -0
  107. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/scheduler/settings/__init__.py +0 -0
  108. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/scheduler/transfer_fetcher.py +0 -0
  109. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/scheduler/transfer_job_manager.py +0 -0
  110. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/scheduler/utils.py +0 -0
  111. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/__init__.py +0 -0
  112. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/ping.py +0 -0
  113. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/__init__.py +0 -0
  114. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/__init__.py +0 -0
  115. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/iceberg_rest_s3_delegated/__init__.py +0 -0
  116. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/iceberg_rest_s3_direct/__init__.py +0 -0
  117. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/mixins.py +0 -0
  118. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/auth/token.py +0 -0
  119. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connection_types.py +0 -0
  120. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/__init__.py +0 -0
  121. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/clickhouse.py +0 -0
  122. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/connection_base.py +0 -0
  123. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/ftp.py +0 -0
  124. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/ftps.py +0 -0
  125. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/hdfs.py +0 -0
  126. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/hive.py +0 -0
  127. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/mssql.py +0 -0
  128. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/mysql.py +0 -0
  129. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/oracle.py +0 -0
  130. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/postgres.py +0 -0
  131. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/s3.py +0 -0
  132. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/samba.py +0 -0
  133. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/sftp.py +0 -0
  134. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/connections/webdav.py +0 -0
  135. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/file_formats.py +0 -0
  136. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/groups.py +0 -0
  137. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/page.py +0 -0
  138. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/queue.py +0 -0
  139. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/__init__.py +0 -0
  140. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file/__init__.py +0 -0
  141. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file/base.py +0 -0
  142. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file/ftp.py +0 -0
  143. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file/ftps.py +0 -0
  144. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file/hdfs.py +0 -0
  145. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file/s3.py +0 -0
  146. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file/samba.py +0 -0
  147. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file/sftp.py +0 -0
  148. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/file/webdav.py +0 -0
  149. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/resources.py +0 -0
  150. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/run.py +0 -0
  151. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/transfers/strategy.py +0 -0
  152. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/types.py +0 -0
  153. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/schemas/v1/users.py +0 -0
  154. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/__init__.py +0 -0
  155. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/__main__.py +0 -0
  156. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/__init__.py +0 -0
  157. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/monitoring.py +0 -0
  158. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/router.py +0 -0
  159. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/v1/__init__.py +0 -0
  160. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/v1/auth.py +0 -0
  161. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/v1/connections.py +0 -0
  162. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/v1/groups.py +0 -0
  163. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/v1/queue.py +0 -0
  164. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/v1/router.py +0 -0
  165. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/v1/runs.py +0 -0
  166. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/v1/transfers.py +0 -0
  167. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/api/v1/users.py +0 -0
  168. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/dependencies/__init__.py +0 -0
  169. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/dependencies/get_access_token.py +0 -0
  170. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/dependencies/stub.py +0 -0
  171. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/handler.py +0 -0
  172. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/middlewares/__init__.py +0 -0
  173. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/middlewares/cors.py +0 -0
  174. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/middlewares/monitoring/__init__.py +0 -0
  175. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/middlewares/monitoring/metrics.py +0 -0
  176. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/middlewares/openapi.py +0 -0
  177. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/middlewares/request_id.py +0 -0
  178. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/middlewares/static_files.py +0 -0
  179. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/providers/__init__.py +0 -0
  180. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/providers/auth/__init__.py +0 -0
  181. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/providers/auth/base_provider.py +0 -0
  182. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/providers/auth/dummy_provider.py +0 -0
  183. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/providers/auth/keycloak_provider.py +0 -0
  184. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/providers/auth/oauth2_gateway_provider.py +0 -0
  185. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/scripts/export_openapi_schema.py +0 -0
  186. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/scripts/manage_superusers.py +0 -0
  187. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/services/__init__.py +0 -0
  188. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/services/get_user.py +0 -0
  189. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/services/unit_of_work.py +0 -0
  190. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/__init__.py +0 -0
  191. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/auth/__init__.py +0 -0
  192. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/auth/dummy.py +0 -0
  193. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/auth/jwt.py +0 -0
  194. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/auth/keycloak.py +0 -0
  195. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/auth/oauth2_gateway.py +0 -0
  196. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/server/__init__.py +0 -0
  197. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/server/cors.py +0 -0
  198. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/server/monitoring.py +0 -0
  199. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/server/openapi.py +0 -0
  200. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/server/request_id.py +0 -0
  201. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/settings/server/static_files.py +0 -0
  202. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/utils/__init__.py +0 -0
  203. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/utils/jwt.py +0 -0
  204. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/server/utils/slug.py +0 -0
  205. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/settings/__init__.py +0 -0
  206. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/settings/base.py +0 -0
  207. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/settings/broker.py +0 -0
  208. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/settings/credentials.py +0 -0
  209. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/settings/database.py +0 -0
  210. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/settings/logging.py +0 -0
  211. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/__init__.py +0 -0
  212. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/base.py +0 -0
  213. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/celery.py +0 -0
  214. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/controller.py +0 -0
  215. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/__init__.py +0 -0
  216. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/base.py +0 -0
  217. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/db/__init__.py +0 -0
  218. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/db/clickhouse.py +0 -0
  219. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/db/hive.py +0 -0
  220. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/db/iceberg.py +0 -0
  221. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/db/mssql.py +0 -0
  222. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/db/mysql.py +0 -0
  223. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/db/oracle.py +0 -0
  224. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/db/postgres.py +0 -0
  225. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/__init__.py +0 -0
  226. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/ftp.py +0 -0
  227. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/ftps.py +0 -0
  228. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/hdfs.py +0 -0
  229. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/samba.py +0 -0
  230. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/sftp.py +0 -0
  231. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/handlers/file/webdav.py +0 -0
  232. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/ivy2.py +0 -0
  233. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/settings/__init__.py +0 -0
  234. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/settings/hwm_store.py +0 -0
  235. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/spark.py +0 -0
  236. {data_syncmaster-0.3.1 → data_syncmaster-0.3.2}/syncmaster/worker/transfer.py +0 -0
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: data-syncmaster
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Syncmaster REST API + scheduler + Worker
5
5
  Author-email: MWS Data Bridge <onetools@mts.ru>
6
6
  License-Expression: Apache-2.0
7
- Project-URL: Homepage, https://github.com/MobileTeleSystems/syncmaster
7
+ Project-URL: Homepage, https://github.com/MTSWebServices/syncmaster
8
8
  Project-URL: Documentation, https://syncmaster.readthedocs.io/
9
- Project-URL: Source, https://github.com/MobileTeleSystems/syncmaster
10
- Project-URL: CI/CD, https://github.com/MobileTeleSystems/syncmaster/actions
11
- Project-URL: Tracker, https://github.com/MobileTeleSystems/syncmaster/issues
9
+ Project-URL: Source, https://github.com/MTSWebServices/syncmaster
10
+ Project-URL: CI/CD, https://github.com/MTSWebServices/syncmaster/actions
11
+ Project-URL: Tracker, https://github.com/MTSWebServices/syncmaster/issues
12
12
  Keywords: Syncmaster,REST,API,Worker,Spark,Transfer,ETL
13
13
  Classifier: Development Status :: 3 - Alpha
14
14
  Classifier: Framework :: Pydantic
@@ -27,7 +27,7 @@ Requires-Python: >=3.11
27
27
  Description-Content-Type: text/x-rst
28
28
  License-File: LICENSE.txt
29
29
  Requires-Dist: pydantic~=2.12.5
30
- Requires-Dist: pydantic-settings~=2.12.0
30
+ Requires-Dist: pydantic-settings<2.14,>=2.12
31
31
  Requires-Dist: pydantic-settings-logging~=0.1.1
32
32
  Requires-Dist: sqlalchemy~=2.0.44
33
33
  Requires-Dist: sqlalchemy-utils~=0.42.0
@@ -39,14 +39,14 @@ Requires-Dist: uuid6~=2025.0.1
39
39
  Requires-Dist: celery~=5.6.0
40
40
  Requires-Dist: psycopg2-binary~=2.9.11
41
41
  Provides-Extra: server
42
- Requires-Dist: fastapi~=0.128.0; extra == "server"
42
+ Requires-Dist: fastapi~=0.129; extra == "server"
43
43
  Requires-Dist: starlette-exporter~=0.23.0; extra == "server"
44
44
  Requires-Dist: python-multipart~=0.0.21; extra == "server"
45
- Requires-Dist: uvicorn~=0.40.0; extra == "server"
45
+ Requires-Dist: uvicorn~=0.41.0; extra == "server"
46
46
  Requires-Dist: alembic~=1.18.1; extra == "server"
47
- Requires-Dist: pyjwt~=2.10.1; extra == "server"
47
+ Requires-Dist: pyjwt~=2.11.0; extra == "server"
48
48
  Requires-Dist: asyncpg~=0.31; extra == "server"
49
- Requires-Dist: python-keycloak~=7.0.1; extra == "server"
49
+ Requires-Dist: python-keycloak<7.2.0,>=7.0.1; extra == "server"
50
50
  Requires-Dist: itsdangerous~=2.2.0; extra == "server"
51
51
  Provides-Extra: scheduler
52
52
  Requires-Dist: asyncpg~=0.31; extra == "scheduler"
@@ -64,9 +64,9 @@ Dynamic: license-file
64
64
 
65
65
  |Logo|
66
66
 
67
- .. |Logo| image:: https://raw.githubusercontent.com/MobileTeleSystems/syncmaster/d14bf1b1272f15d42f441d6e33264bd2f95216c9/docs/_static/logo_wide.svg
67
+ .. |Logo| image:: https://raw.githubusercontent.com/MTSWebServices/syncmaster/b6622b1b139137070f2287e288a4105c1110c1e4/docs/_static/logo_wide.svg
68
68
  :alt: Data.SyncMaster logo
69
- :target: https://github.com/MobileTeleSystems/data-syncmaster
69
+ :target: https://github.com/MTSWebServices/data-syncmaster
70
70
 
71
71
  |Repo Status| |Docker image| |PyPI| |PyPI License| |PyPI Python Version| |Documentation|
72
72
  |Build Status| |Coverage| |pre-commit.ci|
@@ -78,18 +78,18 @@ Dynamic: license-file
78
78
  .. |PyPI| image:: https://img.shields.io/pypi/v/data-syncmaster
79
79
  :target: https://pypi.org/project/data-syncmaster/
80
80
  .. |PyPI License| image:: https://img.shields.io/pypi/l/data-syncmaster.svg
81
- :target: https://github.com/MobileTeleSystems/syncmaster/blob/develop/LICENSE.txt
81
+ :target: https://github.com/MTSWebServices/syncmaster/blob/develop/LICENSE.txt
82
82
  .. |PyPI Python Version| image:: https://img.shields.io/pypi/pyversions/data-syncmaster.svg
83
83
  :target: https://badge.fury.io/py/data-syncmaster
84
84
  .. |Documentation| image:: https://readthedocs.org/projects/syncmaster/badge/?version=stable
85
85
  :target: https://syncmaster.readthedocs.io
86
- .. |Build Status| image:: https://github.com/MobileTeleSystems/syncmaster/workflows/Run%20All%20Tests/badge.svg
87
- :target: https://github.com/MobileTeleSystems/syncmaster/actions
86
+ .. |Build Status| image:: https://github.com/MTSWebServices/syncmaster/workflows/Run%20All%20Tests/badge.svg
87
+ :target: https://github.com/MTSWebServices/syncmaster/actions
88
88
  .. |Coverage| image:: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/
89
89
  MTSOnGithub/03e73a82ecc4709934540ce8201cc3b4/raw/syncmaster_badge.json
90
- :target: https://github.com/MobileTeleSystems/syncmaster/actions
91
- .. |pre-commit.ci| image:: https://results.pre-commit.ci/badge/github/MobileTeleSystems/syncmaster/develop.svg
92
- :target: https://results.pre-commit.ci/latest/github/MobileTeleSystems/syncmaster/develop
90
+ :target: https://github.com/MTSWebServices/syncmaster/actions
91
+ .. |pre-commit.ci| image:: https://results.pre-commit.ci/badge/github/MTSWebServices/syncmaster/develop.svg
92
+ :target: https://results.pre-commit.ci/latest/github/MTSWebServices/syncmaster/develop
93
93
 
94
94
  What is Data.SyncMaster?
95
95
  ------------------------
@@ -2,9 +2,9 @@
2
2
 
3
3
  |Logo|
4
4
 
5
- .. |Logo| image:: https://raw.githubusercontent.com/MobileTeleSystems/syncmaster/d14bf1b1272f15d42f441d6e33264bd2f95216c9/docs/_static/logo_wide.svg
5
+ .. |Logo| image:: https://raw.githubusercontent.com/MTSWebServices/syncmaster/b6622b1b139137070f2287e288a4105c1110c1e4/docs/_static/logo_wide.svg
6
6
  :alt: Data.SyncMaster logo
7
- :target: https://github.com/MobileTeleSystems/data-syncmaster
7
+ :target: https://github.com/MTSWebServices/data-syncmaster
8
8
 
9
9
  |Repo Status| |Docker image| |PyPI| |PyPI License| |PyPI Python Version| |Documentation|
10
10
  |Build Status| |Coverage| |pre-commit.ci|
@@ -16,18 +16,18 @@
16
16
  .. |PyPI| image:: https://img.shields.io/pypi/v/data-syncmaster
17
17
  :target: https://pypi.org/project/data-syncmaster/
18
18
  .. |PyPI License| image:: https://img.shields.io/pypi/l/data-syncmaster.svg
19
- :target: https://github.com/MobileTeleSystems/syncmaster/blob/develop/LICENSE.txt
19
+ :target: https://github.com/MTSWebServices/syncmaster/blob/develop/LICENSE.txt
20
20
  .. |PyPI Python Version| image:: https://img.shields.io/pypi/pyversions/data-syncmaster.svg
21
21
  :target: https://badge.fury.io/py/data-syncmaster
22
22
  .. |Documentation| image:: https://readthedocs.org/projects/syncmaster/badge/?version=stable
23
23
  :target: https://syncmaster.readthedocs.io
24
- .. |Build Status| image:: https://github.com/MobileTeleSystems/syncmaster/workflows/Run%20All%20Tests/badge.svg
25
- :target: https://github.com/MobileTeleSystems/syncmaster/actions
24
+ .. |Build Status| image:: https://github.com/MTSWebServices/syncmaster/workflows/Run%20All%20Tests/badge.svg
25
+ :target: https://github.com/MTSWebServices/syncmaster/actions
26
26
  .. |Coverage| image:: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/
27
27
  MTSOnGithub/03e73a82ecc4709934540ce8201cc3b4/raw/syncmaster_badge.json
28
- :target: https://github.com/MobileTeleSystems/syncmaster/actions
29
- .. |pre-commit.ci| image:: https://results.pre-commit.ci/badge/github/MobileTeleSystems/syncmaster/develop.svg
30
- :target: https://results.pre-commit.ci/latest/github/MobileTeleSystems/syncmaster/develop
28
+ :target: https://github.com/MTSWebServices/syncmaster/actions
29
+ .. |pre-commit.ci| image:: https://results.pre-commit.ci/badge/github/MTSWebServices/syncmaster/develop.svg
30
+ :target: https://results.pre-commit.ci/latest/github/MTSWebServices/syncmaster/develop
31
31
 
32
32
  What is Data.SyncMaster?
33
33
  ------------------------
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: data-syncmaster
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Syncmaster REST API + scheduler + Worker
5
5
  Author-email: MWS Data Bridge <onetools@mts.ru>
6
6
  License-Expression: Apache-2.0
7
- Project-URL: Homepage, https://github.com/MobileTeleSystems/syncmaster
7
+ Project-URL: Homepage, https://github.com/MTSWebServices/syncmaster
8
8
  Project-URL: Documentation, https://syncmaster.readthedocs.io/
9
- Project-URL: Source, https://github.com/MobileTeleSystems/syncmaster
10
- Project-URL: CI/CD, https://github.com/MobileTeleSystems/syncmaster/actions
11
- Project-URL: Tracker, https://github.com/MobileTeleSystems/syncmaster/issues
9
+ Project-URL: Source, https://github.com/MTSWebServices/syncmaster
10
+ Project-URL: CI/CD, https://github.com/MTSWebServices/syncmaster/actions
11
+ Project-URL: Tracker, https://github.com/MTSWebServices/syncmaster/issues
12
12
  Keywords: Syncmaster,REST,API,Worker,Spark,Transfer,ETL
13
13
  Classifier: Development Status :: 3 - Alpha
14
14
  Classifier: Framework :: Pydantic
@@ -27,7 +27,7 @@ Requires-Python: >=3.11
27
27
  Description-Content-Type: text/x-rst
28
28
  License-File: LICENSE.txt
29
29
  Requires-Dist: pydantic~=2.12.5
30
- Requires-Dist: pydantic-settings~=2.12.0
30
+ Requires-Dist: pydantic-settings<2.14,>=2.12
31
31
  Requires-Dist: pydantic-settings-logging~=0.1.1
32
32
  Requires-Dist: sqlalchemy~=2.0.44
33
33
  Requires-Dist: sqlalchemy-utils~=0.42.0
@@ -39,14 +39,14 @@ Requires-Dist: uuid6~=2025.0.1
39
39
  Requires-Dist: celery~=5.6.0
40
40
  Requires-Dist: psycopg2-binary~=2.9.11
41
41
  Provides-Extra: server
42
- Requires-Dist: fastapi~=0.128.0; extra == "server"
42
+ Requires-Dist: fastapi~=0.129; extra == "server"
43
43
  Requires-Dist: starlette-exporter~=0.23.0; extra == "server"
44
44
  Requires-Dist: python-multipart~=0.0.21; extra == "server"
45
- Requires-Dist: uvicorn~=0.40.0; extra == "server"
45
+ Requires-Dist: uvicorn~=0.41.0; extra == "server"
46
46
  Requires-Dist: alembic~=1.18.1; extra == "server"
47
- Requires-Dist: pyjwt~=2.10.1; extra == "server"
47
+ Requires-Dist: pyjwt~=2.11.0; extra == "server"
48
48
  Requires-Dist: asyncpg~=0.31; extra == "server"
49
- Requires-Dist: python-keycloak~=7.0.1; extra == "server"
49
+ Requires-Dist: python-keycloak<7.2.0,>=7.0.1; extra == "server"
50
50
  Requires-Dist: itsdangerous~=2.2.0; extra == "server"
51
51
  Provides-Extra: scheduler
52
52
  Requires-Dist: asyncpg~=0.31; extra == "scheduler"
@@ -64,9 +64,9 @@ Dynamic: license-file
64
64
 
65
65
  |Logo|
66
66
 
67
- .. |Logo| image:: https://raw.githubusercontent.com/MobileTeleSystems/syncmaster/d14bf1b1272f15d42f441d6e33264bd2f95216c9/docs/_static/logo_wide.svg
67
+ .. |Logo| image:: https://raw.githubusercontent.com/MTSWebServices/syncmaster/b6622b1b139137070f2287e288a4105c1110c1e4/docs/_static/logo_wide.svg
68
68
  :alt: Data.SyncMaster logo
69
- :target: https://github.com/MobileTeleSystems/data-syncmaster
69
+ :target: https://github.com/MTSWebServices/data-syncmaster
70
70
 
71
71
  |Repo Status| |Docker image| |PyPI| |PyPI License| |PyPI Python Version| |Documentation|
72
72
  |Build Status| |Coverage| |pre-commit.ci|
@@ -78,18 +78,18 @@ Dynamic: license-file
78
78
  .. |PyPI| image:: https://img.shields.io/pypi/v/data-syncmaster
79
79
  :target: https://pypi.org/project/data-syncmaster/
80
80
  .. |PyPI License| image:: https://img.shields.io/pypi/l/data-syncmaster.svg
81
- :target: https://github.com/MobileTeleSystems/syncmaster/blob/develop/LICENSE.txt
81
+ :target: https://github.com/MTSWebServices/syncmaster/blob/develop/LICENSE.txt
82
82
  .. |PyPI Python Version| image:: https://img.shields.io/pypi/pyversions/data-syncmaster.svg
83
83
  :target: https://badge.fury.io/py/data-syncmaster
84
84
  .. |Documentation| image:: https://readthedocs.org/projects/syncmaster/badge/?version=stable
85
85
  :target: https://syncmaster.readthedocs.io
86
- .. |Build Status| image:: https://github.com/MobileTeleSystems/syncmaster/workflows/Run%20All%20Tests/badge.svg
87
- :target: https://github.com/MobileTeleSystems/syncmaster/actions
86
+ .. |Build Status| image:: https://github.com/MTSWebServices/syncmaster/workflows/Run%20All%20Tests/badge.svg
87
+ :target: https://github.com/MTSWebServices/syncmaster/actions
88
88
  .. |Coverage| image:: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/
89
89
  MTSOnGithub/03e73a82ecc4709934540ce8201cc3b4/raw/syncmaster_badge.json
90
- :target: https://github.com/MobileTeleSystems/syncmaster/actions
91
- .. |pre-commit.ci| image:: https://results.pre-commit.ci/badge/github/MobileTeleSystems/syncmaster/develop.svg
92
- :target: https://results.pre-commit.ci/latest/github/MobileTeleSystems/syncmaster/develop
90
+ :target: https://github.com/MTSWebServices/syncmaster/actions
91
+ .. |pre-commit.ci| image:: https://results.pre-commit.ci/badge/github/MTSWebServices/syncmaster/develop.svg
92
+ :target: https://results.pre-commit.ci/latest/github/MTSWebServices/syncmaster/develop
93
93
 
94
94
  What is Data.SyncMaster?
95
95
  ------------------------
@@ -142,6 +142,7 @@ syncmaster/schemas/v1/transfers/transformations/__init__.py
142
142
  syncmaster/schemas/v1/transfers/transformations/dataframe_columns_filter.py
143
143
  syncmaster/schemas/v1/transfers/transformations/dataframe_rows_filter.py
144
144
  syncmaster/schemas/v1/transfers/transformations/file_metadata_filter.py
145
+ syncmaster/schemas/v1/transfers/transformations/sql.py
145
146
  syncmaster/server/__init__.py
146
147
  syncmaster/server/__main__.py
147
148
  syncmaster/server/handler.py
@@ -1,5 +1,5 @@
1
1
  pydantic~=2.12.5
2
- pydantic-settings~=2.12.0
2
+ pydantic-settings<2.14,>=2.12
3
3
  pydantic-settings-logging~=0.1.1
4
4
  sqlalchemy~=2.0.44
5
5
  sqlalchemy-utils~=0.42.0
@@ -19,14 +19,14 @@ asyncpg~=0.31
19
19
  apscheduler~=3.11.1
20
20
 
21
21
  [server]
22
- fastapi~=0.128.0
22
+ fastapi~=0.129
23
23
  starlette-exporter~=0.23.0
24
24
  python-multipart~=0.0.21
25
- uvicorn~=0.40.0
25
+ uvicorn~=0.41.0
26
26
  alembic~=1.18.1
27
- pyjwt~=2.10.1
27
+ pyjwt~=2.11.0
28
28
  asyncpg~=0.31
29
- python-keycloak~=7.0.1
29
+ python-keycloak<7.2.0,>=7.0.1
30
30
  itsdangerous~=2.2.0
31
31
 
32
32
  [worker]
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = [ "setuptools>=41", "wheel", "setuptools-git-versioning>=2.0,<3", ]
2
+ requires = [ "setuptools>=41", "wheel", "setuptools-git-versioning<4,>=3.0", ]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [tool.setuptools-git-versioning]
@@ -34,7 +34,7 @@ keywords = ["Syncmaster", "REST", "API", "Worker", "Spark", "Transfer", "ETL"]
34
34
  requires-python = ">=3.11"
35
35
  dependencies = [
36
36
  "pydantic~=2.12.5",
37
- "pydantic-settings~=2.12.0",
37
+ "pydantic-settings>=2.12,<2.14",
38
38
  "pydantic-settings-logging~=0.1.1",
39
39
  "sqlalchemy~=2.0.44",
40
40
  "sqlalchemy-utils~=0.42.0",
@@ -56,23 +56,23 @@ exclude = ["docs", "tests"]
56
56
  "*" = ["py.typed", "*.yml", "*.ini", "VERSION"]
57
57
 
58
58
  [project.urls] # Optional
59
- "Homepage" = "https://github.com/MobileTeleSystems/syncmaster"
59
+ "Homepage" = "https://github.com/MTSWebServices/syncmaster"
60
60
  "Documentation" = "https://syncmaster.readthedocs.io/"
61
- "Source" = "https://github.com/MobileTeleSystems/syncmaster"
62
- "CI/CD" = "https://github.com/MobileTeleSystems/syncmaster/actions"
63
- "Tracker" = "https://github.com/MobileTeleSystems/syncmaster/issues"
61
+ "Source" = "https://github.com/MTSWebServices/syncmaster"
62
+ "CI/CD" = "https://github.com/MTSWebServices/syncmaster/actions"
63
+ "Tracker" = "https://github.com/MTSWebServices/syncmaster/issues"
64
64
 
65
65
 
66
66
  [project.optional-dependencies]
67
67
  server = [
68
- "fastapi~=0.128.0",
68
+ "fastapi~=0.129",
69
69
  "starlette-exporter~=0.23.0",
70
70
  "python-multipart~=0.0.21",
71
- "uvicorn~=0.40.0",
71
+ "uvicorn~=0.41.0",
72
72
  "alembic~=1.18.1",
73
- "pyjwt~=2.10.1",
73
+ "pyjwt~=2.11.0",
74
74
  "asyncpg~=0.31",
75
- "python-keycloak~=7.0.1",
75
+ "python-keycloak>=7.0.1,<7.2.0",
76
76
  "itsdangerous~=2.2.0",
77
77
  ]
78
78
  scheduler = [
@@ -96,7 +96,7 @@ test = [
96
96
  "pytest-asyncio>=0.26.0,<1.0",
97
97
  "pytest-randomly~=4.0.1",
98
98
  "pytest-rerunfailures~=16.1",
99
- "pytest-deadfixtures~=3.0.0",
99
+ "pytest-deadfixtures>=3.0,<3.2",
100
100
  "pytest-mock~=3.15.1",
101
101
  "pytest-lazy-fixtures~=1.4.0",
102
102
  "faker~=40.1",
@@ -106,23 +106,24 @@ test = [
106
106
  "dirty-equals~=0.11.0",
107
107
  ]
108
108
  dev = [
109
+ "ruff~=0.15.0",
109
110
  "mypy~=1.19.1",
110
- "prek~=0.2.25",
111
+ "prek~=0.3.2",
111
112
  "sqlalchemy[mypy]~=2.0.44",
112
113
  "types-jwcrypto~=1.5.0",
113
114
  ]
114
115
  docs = [
115
- "setuptools-git-versioning~=2.1.0",
116
+ "setuptools-git-versioning>=2.1,<3.1",
116
117
  "autodoc-pydantic~=2.2.0",
117
118
  "numpydoc~=1.10.0",
118
- "sphinx~=8.2.3",
119
+ "sphinx>=8.2.3,<9.1.0",
119
120
  "furo~=2025.12.19",
120
121
  "sphinx-copybutton~=0.5.2",
121
122
  "sphinxcontrib-towncrier~=0.5.0a0",
122
123
  "towncrier~=25.8.0",
123
124
  "sphinx-issues~=5.0.1",
124
- "sphinx-design~=0.6.1",
125
- "sphinx-favicon~=1.0.1",
125
+ "sphinx-design>=0.6.1,<0.8.0",
126
+ "sphinx-favicon>=1.0.1,<1.2.0",
126
127
  "sphinx-argparse~=0.5.2",
127
128
  # https://github.com/mgeier/sphinx-last-updated-by-git/pull/77
128
129
  "sphinx-last-updated-by-git~=0.3.8",
@@ -0,0 +1 @@
1
+ 0.3.2
@@ -20,8 +20,7 @@ depends_on = None
20
20
 
21
21
  def upgrade():
22
22
  sql_expression = (
23
- "to_tsvector('english'::regconfig, "
24
- "name || ' ' || "
23
+ "to_tsvector('english'::regconfig, name || ' ' || "
25
24
  "COALESCE(json_extract_path_text(source_params, 'table_name'), '') || ' ' || "
26
25
  "COALESCE(json_extract_path_text(target_params, 'table_name'), '') || ' ' || "
27
26
  "COALESCE(json_extract_path_text(source_params, 'directory_path'), '') || ' ' || "
@@ -30,8 +29,7 @@ def upgrade():
30
29
  "COALESCE(translate(json_extract_path_text(source_params, 'table_name'), './', ' '), '') || ' ' || "
31
30
  "COALESCE(translate(json_extract_path_text(target_params, 'table_name'), './', ' '), '') || ' ' || "
32
31
  "COALESCE(translate(json_extract_path_text(source_params, 'directory_path'), './', ' '), '') || ' ' || "
33
- "COALESCE(translate(json_extract_path_text(target_params, 'directory_path'), './', ' '), '')"
34
- ")"
32
+ "COALESCE(translate(json_extract_path_text(target_params, 'directory_path'), './', ' '), ''))"
35
33
  )
36
34
  op.create_table(
37
35
  "transfer",
@@ -201,8 +201,7 @@ def downgrade() -> None:
201
201
  "search_vector",
202
202
  postgresql.TSVECTOR(),
203
203
  sa.Computed(
204
- "to_tsvector('english'::regconfig, "
205
- "name || ' ') || "
204
+ "to_tsvector('english'::regconfig, name || ' ' || "
206
205
  "COALESCE(json_extract_path_text(source_params, VARIADIC ARRAY['table_name']), '') || ' ' || "
207
206
  "COALESCE(json_extract_path_text(target_params, VARIADIC ARRAY['table_name']), '') || ' ' || "
208
207
  "COALESCE(json_extract_path_text(source_params, VARIADIC ARRAY['directory_path']), '') || ' ' || "
@@ -8,7 +8,7 @@ from syncmaster.schemas.v1.auth.mixins import SecretDumpMixin
8
8
 
9
9
 
10
10
  class ReadBasicAuthSchema(SecretDumpMixin):
11
- type: Literal["basic"] = Field(description="Auth type")
11
+ type: Literal["basic"] = Field(default="basic", description="Auth type")
12
12
  user: str
13
13
 
14
14
 
@@ -8,7 +8,7 @@ from syncmaster.schemas.v1.auth.mixins import SecretDumpMixin
8
8
 
9
9
 
10
10
  class ReadIcebergRESTCatalogBearerAuthSchema(SecretDumpMixin):
11
- type: Literal["iceberg_rest_bearer"] = Field(description="Auth type")
11
+ type: Literal["iceberg_rest_bearer"] = Field(default="iceberg_rest_bearer", description="Auth type")
12
12
 
13
13
 
14
14
  class CreateIcebergRESTCatalogBearerAuthSchema(ReadIcebergRESTCatalogBearerAuthSchema):
@@ -9,7 +9,10 @@ from syncmaster.schemas.v1.types import URL
9
9
 
10
10
 
11
11
  class ReadIcebergRESTCatalogOAuth2ClientCredentialsAuthSchema(SecretDumpMixin):
12
- type: Literal["iceberg_rest_oauth2_client_credentials"] = Field(description="Auth type")
12
+ type: Literal["iceberg_rest_oauth2_client_credentials"] = Field(
13
+ default="iceberg_rest_oauth2_client_credentials",
14
+ description="Auth type",
15
+ )
13
16
  rest_catalog_oauth2_client_id: str
14
17
  rest_catalog_oauth2_scopes: list[str] = Field(default_factory=list)
15
18
  rest_catalog_oauth2_resource: str | None = None
@@ -8,7 +8,10 @@ from syncmaster.schemas.v1.auth.mixins import SecretDumpMixin
8
8
 
9
9
 
10
10
  class ReadIcebergRESTCatalogBearerS3BasicAuthSchema(SecretDumpMixin):
11
- type: Literal["iceberg_rest_bearer_s3_basic"] = Field(description="Auth type")
11
+ type: Literal["iceberg_rest_bearer_s3_basic"] = Field(
12
+ default="iceberg_rest_bearer_s3_basic",
13
+ description="Auth type",
14
+ )
12
15
  s3_access_key: str
13
16
 
14
17
 
@@ -8,7 +8,10 @@ from syncmaster.schemas.v1.auth.mixins import SecretDumpMixin
8
8
 
9
9
 
10
10
  class ReadIcebergRESTCatalogOAuth2ClientCredentialsS3BasicAuthSchema(SecretDumpMixin):
11
- type: Literal["iceberg_rest_oauth2_client_credentials_s3_basic"] = Field(description="Auth type")
11
+ type: Literal["iceberg_rest_oauth2_client_credentials_s3_basic"] = Field(
12
+ default="iceberg_rest_oauth2_client_credentials_s3_basic",
13
+ description="Auth type",
14
+ )
12
15
  rest_catalog_oauth2_client_id: str
13
16
  rest_catalog_oauth2_scopes: list[str] = Field(default_factory=list)
14
17
  rest_catalog_oauth2_resource: str | None = None
@@ -8,7 +8,7 @@ from syncmaster.schemas.v1.auth.mixins import SecretDumpMixin
8
8
 
9
9
 
10
10
  class ReadS3AuthSchema(SecretDumpMixin):
11
- type: Literal["s3"] = Field(description="Auth type")
11
+ type: Literal["s3"] = Field(default="s3", description="Auth type")
12
12
  access_key: str
13
13
 
14
14
 
@@ -8,7 +8,7 @@ from syncmaster.schemas.v1.auth.mixins import SecretDumpMixin
8
8
 
9
9
 
10
10
  class ReadSambaAuthSchema(SecretDumpMixin):
11
- type: Literal["samba"] = Field(description="Auth type")
11
+ type: Literal["samba"] = Field(default="samba", description="Auth type")
12
12
  user: str
13
13
  auth_type: Literal["NTLMv1", "NTLMv2"] = "NTLMv2"
14
14
 
@@ -24,7 +24,7 @@ from syncmaster.schemas.v1.types import URL
24
24
 
25
25
 
26
26
  class IcebergRESTCatalogS3DirectConnectionDataSchema(BaseModel):
27
- type: Literal["iceberg_rest_s3_direct"]
27
+ type: Literal["iceberg_rest_s3_direct"] = "iceberg_rest_s3_direct"
28
28
  rest_catalog_url: URL
29
29
  s3_warehouse_path: str
30
30
  s3_host: str
@@ -37,7 +37,7 @@ class IcebergRESTCatalogS3DirectConnectionDataSchema(BaseModel):
37
37
 
38
38
 
39
39
  class IcebergRESTCatalogS3DelegatedConnectionDataSchema(BaseModel):
40
- type: Literal["iceberg_rest_s3_delegated"]
40
+ type: Literal["iceberg_rest_s3_delegated"] = "iceberg_rest_s3_delegated"
41
41
  rest_catalog_url: URL
42
42
  s3_warehouse_name: str | None = None
43
43
  s3_access_delegation: Literal["vended-credentials", "remote-signing"] = "vended-credentials"
@@ -20,7 +20,11 @@ from syncmaster.schemas.v1.connection_types import (
20
20
 
21
21
  class DBTransfer(BaseModel):
22
22
  TABLE_NAME_PATTERN: ClassVar[str] = r"^[\w\d]+\.[\w\d]+$"
23
- table_name: str = Field(description="Table name", json_schema_extra={"pattern": TABLE_NAME_PATTERN})
23
+ table_name: str = Field(
24
+ description="Table name",
25
+ json_schema_extra={"pattern": TABLE_NAME_PATTERN},
26
+ examples=["myschema.mytable"],
27
+ )
24
28
 
25
29
  # make error message more user friendly
26
30
  @field_validator("table_name", mode="before")
@@ -60,7 +64,11 @@ class IcebergTransferSourceOrTarget(DBTransfer):
60
64
  type: ICEBERG_TYPE
61
65
 
62
66
  TABLE_NAME_PATTERN: ClassVar[str] = r"^[\w\d]+(\.[\w\d]+)+$"
63
- table_name: str = Field(description="Table name", json_schema_extra={"pattern": TABLE_NAME_PATTERN})
67
+ table_name: str = Field(
68
+ description="Table name",
69
+ json_schema_extra={"pattern": TABLE_NAME_PATTERN},
70
+ examples=["myschema.mytable"],
71
+ )
64
72
 
65
73
  # make error message more user friendly
66
74
  @field_validator("table_name", mode="before")
@@ -17,21 +17,21 @@ from syncmaster.schemas.v1.file_formats import (
17
17
  )
18
18
 
19
19
 
20
- class ORCCompression(str, Enum):
20
+ class ORCCompression(str, Enum): # noqa: UP042
21
21
  NONE = "none"
22
22
  SNAPPY = "snappy"
23
23
  ZLIB = "zlib"
24
24
  LZ4 = "lz4"
25
25
 
26
26
 
27
- class ParquetCompression(str, Enum):
27
+ class ParquetCompression(str, Enum): # noqa: UP042
28
28
  NONE = "none"
29
29
  SNAPPY = "snappy"
30
30
  GZIP = "gzip"
31
31
  LZ4 = "lz4"
32
32
 
33
33
 
34
- class JSONCompression(str, Enum):
34
+ class JSONCompression(str, Enum): # noqa: UP042
35
35
  NONE = "none"
36
36
  BZIP2 = "bzip2"
37
37
  GZIP = "gzip"
@@ -40,7 +40,7 @@ class JSONCompression(str, Enum):
40
40
  DEFLATE = "deflate"
41
41
 
42
42
 
43
- class CSVCompression(str, Enum):
43
+ class CSVCompression(str, Enum): # noqa: UP042
44
44
  NONE = "none"
45
45
  BZIP2 = "bzip2"
46
46
  GZIP = "gzip"
@@ -49,7 +49,7 @@ class CSVCompression(str, Enum):
49
49
  DEFLATE = "deflate"
50
50
 
51
51
 
52
- class XMLCompression(str, Enum):
52
+ class XMLCompression(str, Enum): # noqa: UP042
53
53
  NONE = "none"
54
54
  BZIP2 = "bzip2"
55
55
  GZIP = "gzip"
@@ -58,7 +58,7 @@ class XMLCompression(str, Enum):
58
58
 
59
59
 
60
60
  class CSV(BaseModel):
61
- type: CSV_FORMAT
61
+ type: CSV_FORMAT = "csv"
62
62
  delimiter: str = ","
63
63
  encoding: str = "utf-8"
64
64
  quote: str = '"'
@@ -69,37 +69,37 @@ class CSV(BaseModel):
69
69
 
70
70
 
71
71
  class JSONLine(BaseModel):
72
- type: JSONLINE_FORMAT
72
+ type: JSONLINE_FORMAT = "jsonline"
73
73
  encoding: str = "utf-8"
74
74
  line_sep: str = "\n"
75
75
  compression: JSONCompression = JSONCompression.GZIP
76
76
 
77
77
 
78
78
  class JSON(BaseModel):
79
- type: JSON_FORMAT
79
+ type: JSON_FORMAT = "json"
80
80
  encoding: str = "utf-8"
81
81
  line_sep: str = "\n"
82
82
  compression: JSONCompression = JSONCompression.GZIP
83
83
 
84
84
 
85
85
  class Excel(BaseModel):
86
- type: EXCEL_FORMAT
86
+ type: EXCEL_FORMAT = "excel"
87
87
  include_header: bool = False
88
88
  start_cell: str | None = None
89
89
 
90
90
 
91
91
  class XML(BaseModel):
92
- type: XML_FORMAT
92
+ type: XML_FORMAT = "xml"
93
93
  root_tag: str
94
94
  row_tag: str
95
95
  compression: XMLCompression = XMLCompression.GZIP
96
96
 
97
97
 
98
98
  class ORC(BaseModel):
99
- type: ORC_FORMAT
99
+ type: ORC_FORMAT = "orc"
100
100
  compression: ORCCompression = ORCCompression.ZLIB
101
101
 
102
102
 
103
103
  class Parquet(BaseModel):
104
- type: PARQUET_FORMAT
104
+ type: PARQUET_FORMAT = "parquet"
105
105
  compression: ParquetCompression = ParquetCompression.SNAPPY
@@ -14,9 +14,12 @@ from syncmaster.schemas.v1.transfers.transformations.dataframe_rows_filter impor
14
14
  from syncmaster.schemas.v1.transfers.transformations.file_metadata_filter import (
15
15
  FileMetadataFilter,
16
16
  )
17
+ from syncmaster.schemas.v1.transfers.transformations.sql import (
18
+ Sql,
19
+ )
17
20
 
18
21
  TransformationSchema = Annotated[
19
- DataframeRowsFilter | DataframeColumnsFilter | FileMetadataFilter,
22
+ DataframeRowsFilter | DataframeColumnsFilter | FileMetadataFilter | Sql,
20
23
  Field(discriminator="type"),
21
24
  ]
22
25
 
@@ -10,22 +10,22 @@ class BaseColumnsFilter(BaseModel):
10
10
 
11
11
 
12
12
  class IncludeFilter(BaseColumnsFilter):
13
- type: Literal["include"]
13
+ type: Literal["include"] = "include"
14
14
 
15
15
 
16
16
  class RenameFilter(BaseColumnsFilter):
17
- type: Literal["rename"]
18
- to: str
17
+ type: Literal["rename"] = "rename"
18
+ to: str = Field(examples=["new_column_name"])
19
19
 
20
20
 
21
21
  class CastFilter(BaseColumnsFilter):
22
- type: Literal["cast"]
23
- as_type: str
22
+ type: Literal["cast"] = "cast"
23
+ as_type: str = Field(examples=["int"])
24
24
 
25
25
 
26
26
  ColumnsFilter = IncludeFilter | RenameFilter | CastFilter
27
27
 
28
28
 
29
29
  class DataframeColumnsFilter(BaseModel):
30
- type: Literal["dataframe_columns_filter"]
30
+ type: Literal["dataframe_columns_filter"] = "dataframe_columns_filter"
31
31
  filters: list[Annotated[ColumnsFilter, Field(discriminator="type")]] = Field(default_factory=list)