rucio 35.2.1__tar.gz → 35.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rucio might be problematic. Click here for more details.

Files changed (593) hide show
  1. {rucio-35.2.1 → rucio-35.3.0}/PKG-INFO +1 -1
  2. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/baseclient.py +6 -0
  3. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/exception.py +22 -2
  4. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/schema/__init__.py +6 -2
  5. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/types.py +4 -0
  6. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/did.py +33 -33
  7. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/did_meta_plugins/__init__.py +3 -1
  8. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/heartbeat.py +61 -61
  9. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/lifetime_exception.py +6 -6
  10. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/meta_conventions.py +6 -6
  11. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/nongrid_trace.py +17 -4
  12. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/permission/__init__.py +6 -2
  13. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/replica.py +99 -99
  14. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/rse.py +18 -18
  15. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/rule.py +7 -7
  16. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/trace.py +40 -25
  17. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/storage/consistency/actions.py +3 -3
  18. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +1 -1
  19. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/models.py +10 -10
  20. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/protocol.py +27 -13
  21. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/vcsversion.py +3 -3
  22. {rucio-35.2.1 → rucio-35.3.0}/tests/test_heartbeat.py +9 -9
  23. {rucio-35.2.1 → rucio-35.3.0}/tests/test_trace.py +4 -8
  24. {rucio-35.2.1 → rucio-35.3.0}/AUTHORS.rst +0 -0
  25. {rucio-35.2.1 → rucio-35.3.0}/ChangeLog +0 -0
  26. {rucio-35.2.1 → rucio-35.3.0}/LICENSE +0 -0
  27. {rucio-35.2.1 → rucio-35.3.0}/MANIFEST.in +0 -0
  28. {rucio-35.2.1 → rucio-35.3.0}/README.md +0 -0
  29. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio +0 -0
  30. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-abacus-account +0 -0
  31. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-abacus-collection-replica +0 -0
  32. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-abacus-rse +0 -0
  33. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-admin +0 -0
  34. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-atropos +0 -0
  35. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-auditor +0 -0
  36. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-automatix +0 -0
  37. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-bb8 +0 -0
  38. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-c3po +0 -0
  39. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-cache-client +0 -0
  40. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-cache-consumer +0 -0
  41. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-conveyor-finisher +0 -0
  42. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-conveyor-poller +0 -0
  43. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-conveyor-preparer +0 -0
  44. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-conveyor-receiver +0 -0
  45. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-conveyor-stager +0 -0
  46. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-conveyor-submitter +0 -0
  47. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-conveyor-throttler +0 -0
  48. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-dark-reaper +0 -0
  49. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-dumper +0 -0
  50. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-follower +0 -0
  51. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-hermes +0 -0
  52. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-judge-cleaner +0 -0
  53. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-judge-evaluator +0 -0
  54. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-judge-injector +0 -0
  55. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-judge-repairer +0 -0
  56. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-kronos +0 -0
  57. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-minos +0 -0
  58. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-minos-temporary-expiration +0 -0
  59. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-necromancer +0 -0
  60. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-oauth-manager +0 -0
  61. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-reaper +0 -0
  62. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-replica-recoverer +0 -0
  63. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-rse-decommissioner +0 -0
  64. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-storage-consistency-actions +0 -0
  65. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-transmogrifier +0 -0
  66. {rucio-35.2.1 → rucio-35.3.0}/bin/rucio-undertaker +0 -0
  67. {rucio-35.2.1 → rucio-35.3.0}/etc/alembic.ini.template +0 -0
  68. {rucio-35.2.1 → rucio-35.3.0}/etc/alembic_offline.ini.template +0 -0
  69. {rucio-35.2.1 → rucio-35.3.0}/etc/globus-config.yml.template +0 -0
  70. {rucio-35.2.1 → rucio-35.3.0}/etc/ldap.cfg.template +0 -0
  71. {rucio-35.2.1 → rucio-35.3.0}/etc/mail_templates/rule_approval_request.tmpl +0 -0
  72. {rucio-35.2.1 → rucio-35.3.0}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
  73. {rucio-35.2.1 → rucio-35.3.0}/etc/mail_templates/rule_approved_user.tmpl +0 -0
  74. {rucio-35.2.1 → rucio-35.3.0}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
  75. {rucio-35.2.1 → rucio-35.3.0}/etc/mail_templates/rule_denied_user.tmpl +0 -0
  76. {rucio-35.2.1 → rucio-35.3.0}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
  77. {rucio-35.2.1 → rucio-35.3.0}/etc/rse-accounts.cfg.template +0 -0
  78. {rucio-35.2.1 → rucio-35.3.0}/etc/rucio.cfg.atlas.client.template +0 -0
  79. {rucio-35.2.1 → rucio-35.3.0}/etc/rucio.cfg.template +0 -0
  80. {rucio-35.2.1 → rucio-35.3.0}/etc/rucio_multi_vo.cfg.template +0 -0
  81. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/__init__.py +0 -0
  82. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/alembicrevision.py +0 -0
  83. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/__init__.py +0 -0
  84. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/accountclient.py +0 -0
  85. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/accountlimitclient.py +0 -0
  86. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/client.py +0 -0
  87. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/configclient.py +0 -0
  88. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/credentialclient.py +0 -0
  89. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/didclient.py +0 -0
  90. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/diracclient.py +0 -0
  91. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/downloadclient.py +0 -0
  92. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/exportclient.py +0 -0
  93. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/fileclient.py +0 -0
  94. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/importclient.py +0 -0
  95. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/lifetimeclient.py +0 -0
  96. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/lockclient.py +0 -0
  97. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/metaconventionsclient.py +0 -0
  98. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/pingclient.py +0 -0
  99. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/replicaclient.py +0 -0
  100. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/requestclient.py +0 -0
  101. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/rseclient.py +0 -0
  102. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/ruleclient.py +0 -0
  103. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/scopeclient.py +0 -0
  104. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/subscriptionclient.py +0 -0
  105. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/touchclient.py +0 -0
  106. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/client/uploadclient.py +0 -0
  107. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/__init__.py +0 -0
  108. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/cache.py +0 -0
  109. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/config.py +0 -0
  110. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/constants.py +0 -0
  111. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/constraints.py +0 -0
  112. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/didtype.py +0 -0
  113. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/dumper/__init__.py +0 -0
  114. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/dumper/consistency.py +0 -0
  115. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/dumper/data_models.py +0 -0
  116. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/dumper/path_parsing.py +0 -0
  117. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/extra.py +0 -0
  118. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/logging.py +0 -0
  119. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/pcache.py +0 -0
  120. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/plugins.py +0 -0
  121. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/policy.py +0 -0
  122. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/schema/atlas.py +0 -0
  123. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/schema/belleii.py +0 -0
  124. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/schema/domatpc.py +0 -0
  125. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/schema/escape.py +0 -0
  126. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/schema/generic.py +0 -0
  127. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
  128. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/schema/icecube.py +0 -0
  129. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/stomp_utils.py +0 -0
  130. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/stopwatch.py +0 -0
  131. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/test_rucio_server.py +0 -0
  132. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/common/utils.py +0 -0
  133. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/__init__.py +0 -0
  134. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/account.py +0 -0
  135. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/account_counter.py +0 -0
  136. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/account_limit.py +0 -0
  137. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/authentication.py +0 -0
  138. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/config.py +0 -0
  139. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/credential.py +0 -0
  140. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/did_meta_plugins/did_column_meta.py +0 -0
  141. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +0 -0
  142. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/did_meta_plugins/filter_engine.py +0 -0
  143. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/did_meta_plugins/json_meta.py +0 -0
  144. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/did_meta_plugins/mongo_meta.py +0 -0
  145. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/did_meta_plugins/postgres_meta.py +0 -0
  146. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/dirac.py +0 -0
  147. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/distance.py +0 -0
  148. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/exporter.py +0 -0
  149. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/identity.py +0 -0
  150. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/importer.py +0 -0
  151. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/lock.py +0 -0
  152. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/message.py +0 -0
  153. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/monitor.py +0 -0
  154. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/naming_convention.py +0 -0
  155. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/oidc.py +0 -0
  156. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/permission/atlas.py +0 -0
  157. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/permission/belleii.py +0 -0
  158. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/permission/escape.py +0 -0
  159. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/permission/generic.py +0 -0
  160. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/permission/generic_multi_vo.py +0 -0
  161. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/quarantined_replica.py +0 -0
  162. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/replica_sorter.py +0 -0
  163. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/request.py +0 -0
  164. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/rse_counter.py +0 -0
  165. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/rse_expression_parser.py +0 -0
  166. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/rse_selector.py +0 -0
  167. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/rule_grouping.py +0 -0
  168. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/scope.py +0 -0
  169. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/subscription.py +0 -0
  170. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/topology.py +0 -0
  171. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/transfer.py +0 -0
  172. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/vo.py +0 -0
  173. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/core/volatile_replica.py +0 -0
  174. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/__init__.py +0 -0
  175. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/abacus/__init__.py +0 -0
  176. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/abacus/account.py +0 -0
  177. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
  178. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/abacus/rse.py +0 -0
  179. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/atropos/__init__.py +0 -0
  180. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/atropos/atropos.py +0 -0
  181. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/auditor/__init__.py +0 -0
  182. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/auditor/hdfs.py +0 -0
  183. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/auditor/srmdumps.py +0 -0
  184. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/automatix/__init__.py +0 -0
  185. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/automatix/automatix.py +0 -0
  186. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/badreplicas/__init__.py +0 -0
  187. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/badreplicas/minos.py +0 -0
  188. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +0 -0
  189. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/badreplicas/necromancer.py +0 -0
  190. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/bb8/__init__.py +0 -0
  191. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/bb8/bb8.py +0 -0
  192. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/bb8/common.py +0 -0
  193. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +0 -0
  194. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/bb8/t2_background_rebalance.py +0 -0
  195. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/__init__.py +0 -0
  196. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/algorithms/__init__.py +0 -0
  197. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/algorithms/simple.py +0 -0
  198. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space.py +0 -0
  199. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -0
  200. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +0 -0
  201. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/c3po.py +0 -0
  202. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/collectors/__init__.py +0 -0
  203. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/collectors/agis.py +0 -0
  204. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/collectors/free_space.py +0 -0
  205. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/collectors/jedi_did.py +0 -0
  206. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/collectors/mock_did.py +0 -0
  207. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/collectors/network_metrics.py +0 -0
  208. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/collectors/workload.py +0 -0
  209. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/utils/__init__.py +0 -0
  210. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/utils/dataset_cache.py +0 -0
  211. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -0
  212. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/utils/expiring_list.py +0 -0
  213. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/utils/popularity.py +0 -0
  214. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/c3po/utils/timeseries.py +0 -0
  215. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/cache/__init__.py +0 -0
  216. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/cache/consumer.py +0 -0
  217. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/common.py +0 -0
  218. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/conveyor/__init__.py +0 -0
  219. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/conveyor/common.py +0 -0
  220. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/conveyor/finisher.py +0 -0
  221. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/conveyor/poller.py +0 -0
  222. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/conveyor/preparer.py +0 -0
  223. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/conveyor/receiver.py +0 -0
  224. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/conveyor/stager.py +0 -0
  225. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/conveyor/submitter.py +0 -0
  226. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/conveyor/throttler.py +0 -0
  227. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/follower/__init__.py +0 -0
  228. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/follower/follower.py +0 -0
  229. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/hermes/__init__.py +0 -0
  230. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/hermes/hermes.py +0 -0
  231. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/judge/__init__.py +0 -0
  232. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/judge/cleaner.py +0 -0
  233. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/judge/evaluator.py +0 -0
  234. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/judge/injector.py +0 -0
  235. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/judge/repairer.py +0 -0
  236. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/oauthmanager/__init__.py +0 -0
  237. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/oauthmanager/oauthmanager.py +0 -0
  238. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/reaper/__init__.py +0 -0
  239. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/reaper/dark_reaper.py +0 -0
  240. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/reaper/reaper.py +0 -0
  241. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/replicarecoverer/__init__.py +0 -0
  242. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +0 -0
  243. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/rsedecommissioner/__init__.py +0 -0
  244. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/rsedecommissioner/config.py +0 -0
  245. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
  246. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
  247. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +0 -0
  248. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
  249. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +0 -0
  250. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/storage/__init__.py +0 -0
  251. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/storage/consistency/__init__.py +0 -0
  252. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/tracer/__init__.py +0 -0
  253. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/tracer/kronos.py +0 -0
  254. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/transmogrifier/__init__.py +0 -0
  255. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/transmogrifier/transmogrifier.py +0 -0
  256. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/undertaker/__init__.py +0 -0
  257. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/daemons/undertaker/undertaker.py +0 -0
  258. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/__init__.py +0 -0
  259. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/__init__.py +0 -0
  260. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/constants.py +0 -0
  261. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/__init__.py +0 -0
  262. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
  263. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
  264. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
  265. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
  266. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
  267. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
  268. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
  269. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
  270. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
  271. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
  272. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
  273. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
  274. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
  275. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
  276. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
  277. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
  278. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
  279. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
  280. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
  281. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
  282. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
  283. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
  284. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
  285. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
  286. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
  287. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
  288. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
  289. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
  290. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
  291. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
  292. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
  293. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
  294. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
  295. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
  296. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
  297. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
  298. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
  299. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
  300. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
  301. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
  302. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +0 -0
  303. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
  304. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
  305. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
  306. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
  307. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
  308. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
  309. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
  310. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
  311. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
  312. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
  313. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
  314. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
  315. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
  316. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
  317. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
  318. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
  319. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
  320. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
  321. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
  322. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
  323. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
  324. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
  325. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
  326. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
  327. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
  328. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +0 -0
  329. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
  330. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
  331. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
  332. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
  333. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
  334. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
  335. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
  336. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
  337. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
  338. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
  339. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
  340. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
  341. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
  342. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
  343. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
  344. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
  345. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
  346. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
  347. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
  348. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
  349. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
  350. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
  351. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
  352. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
  353. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
  354. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
  355. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
  356. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
  357. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
  358. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
  359. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
  360. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
  361. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
  362. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b0070f3695c8_add_deletedidmeta_table.py +0 -0
  363. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
  364. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b5493606bbf5_fix_primary_key_for_subscription_history.py +0 -0
  365. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
  366. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
  367. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
  368. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
  369. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
  370. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
  371. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
  372. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
  373. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -0
  374. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
  375. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
  376. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
  377. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
  378. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
  379. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
  380. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
  381. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
  382. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
  383. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
  384. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
  385. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
  386. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
  387. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
  388. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
  389. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
  390. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/sautils.py +0 -0
  391. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/session.py +0 -0
  392. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/types.py +0 -0
  393. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/db/sqla/util.py +0 -0
  394. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/__init__.py +0 -0
  395. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/account.py +0 -0
  396. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/account_limit.py +0 -0
  397. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/authentication.py +0 -0
  398. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/config.py +0 -0
  399. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/credential.py +0 -0
  400. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/did.py +0 -0
  401. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/dirac.py +0 -0
  402. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/exporter.py +0 -0
  403. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/heartbeat.py +0 -0
  404. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/identity.py +0 -0
  405. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/importer.py +0 -0
  406. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/lifetime_exception.py +0 -0
  407. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/lock.py +0 -0
  408. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/meta_conventions.py +0 -0
  409. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/permission.py +0 -0
  410. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/quarantined_replica.py +0 -0
  411. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/replica.py +0 -0
  412. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/request.py +0 -0
  413. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/rse.py +0 -0
  414. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/rule.py +0 -0
  415. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/scope.py +0 -0
  416. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/subscription.py +0 -0
  417. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/gateway/vo.py +0 -0
  418. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/__init__.py +0 -0
  419. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/__init__.py +0 -0
  420. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
  421. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/cache.py +0 -0
  422. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/dummy.py +0 -0
  423. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/gfal.py +0 -0
  424. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/globus.py +0 -0
  425. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/gsiftp.py +0 -0
  426. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
  427. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/mock.py +0 -0
  428. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/ngarc.py +0 -0
  429. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/posix.py +0 -0
  430. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/rclone.py +0 -0
  431. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/rfio.py +0 -0
  432. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/srm.py +0 -0
  433. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/ssh.py +0 -0
  434. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/storm.py +0 -0
  435. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/webdav.py +0 -0
  436. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
  437. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/rse/rsemanager.py +0 -0
  438. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/tests/__init__.py +0 -0
  439. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/tests/common.py +0 -0
  440. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/tests/common_server.py +0 -0
  441. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/__init__.py +0 -0
  442. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/bittorrent.py +0 -0
  443. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/bittorrent_driver.py +0 -0
  444. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +0 -0
  445. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/fts3.py +0 -0
  446. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/fts3_plugins.py +0 -0
  447. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/globus.py +0 -0
  448. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/globus_library.py +0 -0
  449. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/mock.py +0 -0
  450. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/transfertool/transfertool.py +0 -0
  451. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/version.py +0 -0
  452. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/__init__.py +0 -0
  453. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/__init__.py +0 -0
  454. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
  455. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
  456. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
  457. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +0 -0
  458. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/accounts.py +0 -0
  459. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/archives.py +0 -0
  460. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/auth.py +0 -0
  461. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/common.py +0 -0
  462. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/config.py +0 -0
  463. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/credentials.py +0 -0
  464. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/dids.py +0 -0
  465. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/dirac.py +0 -0
  466. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/export.py +0 -0
  467. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +0 -0
  468. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/identities.py +0 -0
  469. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/import.py +0 -0
  470. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +0 -0
  471. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/locks.py +0 -0
  472. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/main.py +0 -0
  473. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +0 -0
  474. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
  475. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
  476. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
  477. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/redirect.py +0 -0
  478. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/replicas.py +0 -0
  479. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/requests.py +0 -0
  480. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/rses.py +0 -0
  481. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/rules.py +0 -0
  482. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/scopes.py +0 -0
  483. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +0 -0
  484. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
  485. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
  486. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
  487. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/types.py +0 -0
  488. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/flaskapi/v1/vos.py +0 -0
  489. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/main.py +0 -0
  490. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/metrics.py +0 -0
  491. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio/web/rest/ping.py +0 -0
  492. {rucio-35.2.1 → rucio-35.3.0}/lib/rucio.egg-info/SOURCES.txt +0 -0
  493. {rucio-35.2.1 → rucio-35.3.0}/pylintrc +0 -0
  494. {rucio-35.2.1 → rucio-35.3.0}/pyproject.toml +0 -0
  495. {rucio-35.2.1 → rucio-35.3.0}/requirements/requirements.server.txt +0 -0
  496. {rucio-35.2.1 → rucio-35.3.0}/setup.cfg +0 -0
  497. {rucio-35.2.1 → rucio-35.3.0}/setup.py +0 -0
  498. {rucio-35.2.1 → rucio-35.3.0}/setuputil.py +0 -0
  499. {rucio-35.2.1 → rucio-35.3.0}/tests/test_abacus_account.py +0 -0
  500. {rucio-35.2.1 → rucio-35.3.0}/tests/test_abacus_collection_replica.py +0 -0
  501. {rucio-35.2.1 → rucio-35.3.0}/tests/test_abacus_rse.py +0 -0
  502. {rucio-35.2.1 → rucio-35.3.0}/tests/test_account.py +0 -0
  503. {rucio-35.2.1 → rucio-35.3.0}/tests/test_account_limits.py +0 -0
  504. {rucio-35.2.1 → rucio-35.3.0}/tests/test_archive.py +0 -0
  505. {rucio-35.2.1 → rucio-35.3.0}/tests/test_auditor.py +0 -0
  506. {rucio-35.2.1 → rucio-35.3.0}/tests/test_auditor_hdfs.py +0 -0
  507. {rucio-35.2.1 → rucio-35.3.0}/tests/test_auditor_srmdumps.py +0 -0
  508. {rucio-35.2.1 → rucio-35.3.0}/tests/test_authentication.py +0 -0
  509. {rucio-35.2.1 → rucio-35.3.0}/tests/test_automatix.py +0 -0
  510. {rucio-35.2.1 → rucio-35.3.0}/tests/test_bad_replica.py +0 -0
  511. {rucio-35.2.1 → rucio-35.3.0}/tests/test_bb8.py +0 -0
  512. {rucio-35.2.1 → rucio-35.3.0}/tests/test_belleii.py +0 -0
  513. {rucio-35.2.1 → rucio-35.3.0}/tests/test_bin_rucio.py +0 -0
  514. {rucio-35.2.1 → rucio-35.3.0}/tests/test_boolean.py +0 -0
  515. {rucio-35.2.1 → rucio-35.3.0}/tests/test_clients.py +0 -0
  516. {rucio-35.2.1 → rucio-35.3.0}/tests/test_common_types.py +0 -0
  517. {rucio-35.2.1 → rucio-35.3.0}/tests/test_config.py +0 -0
  518. {rucio-35.2.1 → rucio-35.3.0}/tests/test_conveyor.py +0 -0
  519. {rucio-35.2.1 → rucio-35.3.0}/tests/test_conveyor_submitter.py +0 -0
  520. {rucio-35.2.1 → rucio-35.3.0}/tests/test_counter.py +0 -0
  521. {rucio-35.2.1 → rucio-35.3.0}/tests/test_credential.py +0 -0
  522. {rucio-35.2.1 → rucio-35.3.0}/tests/test_curl.py +0 -0
  523. {rucio-35.2.1 → rucio-35.3.0}/tests/test_daemons.py +0 -0
  524. {rucio-35.2.1 → rucio-35.3.0}/tests/test_dataset_replicas.py +0 -0
  525. {rucio-35.2.1 → rucio-35.3.0}/tests/test_db.py +0 -0
  526. {rucio-35.2.1 → rucio-35.3.0}/tests/test_did.py +0 -0
  527. {rucio-35.2.1 → rucio-35.3.0}/tests/test_did_meta_plugins.py +0 -0
  528. {rucio-35.2.1 → rucio-35.3.0}/tests/test_didtype.py +0 -0
  529. {rucio-35.2.1 → rucio-35.3.0}/tests/test_download.py +0 -0
  530. {rucio-35.2.1 → rucio-35.3.0}/tests/test_dumper.py +0 -0
  531. {rucio-35.2.1 → rucio-35.3.0}/tests/test_dumper_consistency.py +0 -0
  532. {rucio-35.2.1 → rucio-35.3.0}/tests/test_dumper_data_model.py +0 -0
  533. {rucio-35.2.1 → rucio-35.3.0}/tests/test_dumper_path_parsing.py +0 -0
  534. {rucio-35.2.1 → rucio-35.3.0}/tests/test_filter_engine.py +0 -0
  535. {rucio-35.2.1 → rucio-35.3.0}/tests/test_gateway_external_representation.py +0 -0
  536. {rucio-35.2.1 → rucio-35.3.0}/tests/test_hermes.py +0 -0
  537. {rucio-35.2.1 → rucio-35.3.0}/tests/test_identity.py +0 -0
  538. {rucio-35.2.1 → rucio-35.3.0}/tests/test_impl_upload_download.py +0 -0
  539. {rucio-35.2.1 → rucio-35.3.0}/tests/test_import_export.py +0 -0
  540. {rucio-35.2.1 → rucio-35.3.0}/tests/test_judge_cleaner.py +0 -0
  541. {rucio-35.2.1 → rucio-35.3.0}/tests/test_judge_evaluator.py +0 -0
  542. {rucio-35.2.1 → rucio-35.3.0}/tests/test_judge_injector.py +0 -0
  543. {rucio-35.2.1 → rucio-35.3.0}/tests/test_judge_repairer.py +0 -0
  544. {rucio-35.2.1 → rucio-35.3.0}/tests/test_lifetime.py +0 -0
  545. {rucio-35.2.1 → rucio-35.3.0}/tests/test_message.py +0 -0
  546. {rucio-35.2.1 → rucio-35.3.0}/tests/test_meta_conventions.py +0 -0
  547. {rucio-35.2.1 → rucio-35.3.0}/tests/test_meta_did.py +0 -0
  548. {rucio-35.2.1 → rucio-35.3.0}/tests/test_module_import.py +0 -0
  549. {rucio-35.2.1 → rucio-35.3.0}/tests/test_monitor.py +0 -0
  550. {rucio-35.2.1 → rucio-35.3.0}/tests/test_multi_vo.py +0 -0
  551. {rucio-35.2.1 → rucio-35.3.0}/tests/test_naming_convention.py +0 -0
  552. {rucio-35.2.1 → rucio-35.3.0}/tests/test_oauthmanager.py +0 -0
  553. {rucio-35.2.1 → rucio-35.3.0}/tests/test_oidc.py +0 -0
  554. {rucio-35.2.1 → rucio-35.3.0}/tests/test_permission.py +0 -0
  555. {rucio-35.2.1 → rucio-35.3.0}/tests/test_pfns.py +0 -0
  556. {rucio-35.2.1 → rucio-35.3.0}/tests/test_ping.py +0 -0
  557. {rucio-35.2.1 → rucio-35.3.0}/tests/test_preparer.py +0 -0
  558. {rucio-35.2.1 → rucio-35.3.0}/tests/test_qos.py +0 -0
  559. {rucio-35.2.1 → rucio-35.3.0}/tests/test_quarantined_replica.py +0 -0
  560. {rucio-35.2.1 → rucio-35.3.0}/tests/test_reaper.py +0 -0
  561. {rucio-35.2.1 → rucio-35.3.0}/tests/test_redirect.py +0 -0
  562. {rucio-35.2.1 → rucio-35.3.0}/tests/test_replica.py +0 -0
  563. {rucio-35.2.1 → rucio-35.3.0}/tests/test_replica_recoverer.py +0 -0
  564. {rucio-35.2.1 → rucio-35.3.0}/tests/test_replica_sorting.py +0 -0
  565. {rucio-35.2.1 → rucio-35.3.0}/tests/test_request.py +0 -0
  566. {rucio-35.2.1 → rucio-35.3.0}/tests/test_root_proxy.py +0 -0
  567. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse.py +0 -0
  568. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_expression_parser.py +0 -0
  569. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_lfn2path.py +0 -0
  570. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_protocol_gfal2.py +0 -0
  571. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
  572. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_protocol_posix.py +0 -0
  573. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_protocol_rclone.py +0 -0
  574. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_protocol_rsync.py +0 -0
  575. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_protocol_srm.py +0 -0
  576. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_protocol_ssh.py +0 -0
  577. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_protocol_webdav.py +0 -0
  578. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_protocol_xrootd.py +0 -0
  579. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rse_selector.py +0 -0
  580. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rucio_server.py +0 -0
  581. {rucio-35.2.1 → rucio-35.3.0}/tests/test_rule.py +0 -0
  582. {rucio-35.2.1 → rucio-35.3.0}/tests/test_scope.py +0 -0
  583. {rucio-35.2.1 → rucio-35.3.0}/tests/test_subscription.py +0 -0
  584. {rucio-35.2.1 → rucio-35.3.0}/tests/test_throttler.py +0 -0
  585. {rucio-35.2.1 → rucio-35.3.0}/tests/test_tpc.py +0 -0
  586. {rucio-35.2.1 → rucio-35.3.0}/tests/test_transfer.py +0 -0
  587. {rucio-35.2.1 → rucio-35.3.0}/tests/test_transfer_plugins.py +0 -0
  588. {rucio-35.2.1 → rucio-35.3.0}/tests/test_undertaker.py +0 -0
  589. {rucio-35.2.1 → rucio-35.3.0}/tests/test_upload.py +0 -0
  590. {rucio-35.2.1 → rucio-35.3.0}/tests/test_utils.py +0 -0
  591. {rucio-35.2.1 → rucio-35.3.0}/tools/bootstrap.py +0 -0
  592. {rucio-35.2.1 → rucio-35.3.0}/tools/merge_rucio_configs.py +0 -0
  593. {rucio-35.2.1 → rucio-35.3.0}/tools/reset_database.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rucio
3
- Version: 35.2.1
3
+ Version: 35.3.0
4
4
  Summary: Rucio Package
5
5
  Home-page: https://rucio.cern.ch/
6
6
  Author: Rucio
@@ -171,6 +171,9 @@ class BaseClient:
171
171
  except (NoOptionError, NoSectionError):
172
172
  self.logger.debug('No ca_cert found in configuration. Falling back to Mozilla default CA bundle (certifi).')
173
173
  self.ca_cert = True
174
+ except ConfigNotFound:
175
+ self.logger.debug('No configuration found. Falling back to Mozilla default CA bundle (certifi).')
176
+ self.ca_cert = True
174
177
 
175
178
  if account is None:
176
179
  self.logger.debug('No account passed. Trying to get it from the RUCIO_ACCOUNT environment variable or the config file.')
@@ -195,6 +198,9 @@ class BaseClient:
195
198
  except (NoOptionError, NoSectionError):
196
199
  self.logger.debug('No VO found. Using default VO.')
197
200
  self.vo = 'def'
201
+ except ConfigNotFound:
202
+ self.logger.debug('No configuration found. Using default VO.')
203
+ self.vo = 'def'
198
204
 
199
205
  self.auth_token_file_path, self.token_exp_epoch_file, self.token_file, self.token_path = self._get_auth_tokens()
200
206
  self.__authenticate()
@@ -962,11 +962,11 @@ class NoDistance(RucioException):
962
962
 
963
963
  class PolicyPackageNotFound(RucioException):
964
964
  """
965
- The policy package specified in the config file cannot be loaded.
965
+ The policy package specified in the config file was not found
966
966
  """
967
967
  def __init__(self, *args, **kwargs):
968
968
  super(PolicyPackageNotFound, self).__init__(*args, **kwargs)
969
- self._message = 'The specified policy package cannot be loaded'
969
+ self._message = 'The specified policy package was not found'
970
970
  self.error_code = 93
971
971
 
972
972
 
@@ -1099,3 +1099,23 @@ class SortingAlgorithmNotSupported(RucioException):
1099
1099
  super(SortingAlgorithmNotSupported, self).__init__(*args, **kwargs)
1100
1100
  self._message = 'Sorting algorithm is not supported.'
1101
1101
  self.error_code = 106
1102
+
1103
+
1104
+ class ErrorLoadingPolicyPackage(RucioException):
1105
+ """
1106
+ An error occurred while loading the policy package.
1107
+ """
1108
+ def __init__(self, *args, **kwargs):
1109
+ super(ErrorLoadingPolicyPackage, self).__init__(*args, **kwargs)
1110
+ self._message = 'An error occurred while loading the specified policy package'
1111
+ self.error_code = 107
1112
+
1113
+
1114
+ class TraceValidationSchemaNotFound(RucioException):
1115
+ """
1116
+ Trace validation schema not found.
1117
+ """
1118
+ def __init__(self, *args, **kwargs):
1119
+ super(TraceValidationSchemaNotFound, self).__init__(*args, **kwargs)
1120
+ self._message = 'Trace validation schema not found.'
1121
+ self.error_code = 108
@@ -60,8 +60,10 @@ if not multivo:
60
60
 
61
61
  try:
62
62
  module = importlib.import_module(POLICY)
63
- except ImportError:
63
+ except ModuleNotFoundError:
64
64
  raise exception.PolicyPackageNotFound('Module ' + POLICY + ' not found')
65
+ except ImportError:
66
+ raise exception.ErrorLoadingPolicyPackage('An error occurred while loading module ' + POLICY)
65
67
 
66
68
  schema_modules["def"] = module
67
69
  scope_name_regexps.append(module.SCOPE_NAME_REGEXP)
@@ -90,8 +92,10 @@ def load_schema_for_vo(vo: str) -> None:
90
92
 
91
93
  try:
92
94
  module = importlib.import_module(POLICY)
93
- except ImportError:
95
+ except ModuleNotFoundError:
94
96
  raise exception.PolicyPackageNotFound('Module ' + POLICY + ' not found')
97
+ except ImportError:
98
+ raise exception.ErrorLoadingPolicyPackage('An error occurred while loading module ' + POLICY)
95
99
 
96
100
  schema_modules[vo] = module
97
101
 
@@ -308,6 +308,10 @@ class TraceDict(TraceBaseDict):
308
308
  transferEnd: float
309
309
 
310
310
 
311
+ class TraceSchemaDict(TypedDict):
312
+ eventType: str
313
+
314
+
311
315
  class FileToUploadDict(TypedDict):
312
316
  path: PathTypeAlias
313
317
  rse: str
@@ -927,12 +927,12 @@ def delete_dids(
927
927
 
928
928
  # Prepare the common part of the query for updating bad replicas if they exist
929
929
  bad_replica_stmt = update(
930
- models.BadReplicas
930
+ models.BadReplica
931
931
  ).where(
932
- models.BadReplicas.state == BadFilesStatus.BAD
932
+ models.BadReplica.state == BadFilesStatus.BAD
933
933
  ).values({
934
- models.BadReplicas.state: BadFilesStatus.DELETED,
935
- models.BadReplicas.updated_at: datetime.utcnow(),
934
+ models.BadReplica.state: BadFilesStatus.DELETED,
935
+ models.BadReplica.updated_at: datetime.utcnow(),
936
936
  }).execution_options(
937
937
  synchronize_session=False
938
938
  )
@@ -956,8 +956,8 @@ def delete_dids(
956
956
  exists(
957
957
  select(1)
958
958
  ).where(
959
- and_(models.BadReplicas.scope == temp_table.scope,
960
- models.BadReplicas.name == temp_table.name)
959
+ and_(models.BadReplica.scope == temp_table.scope,
960
+ models.BadReplica.name == temp_table.name)
961
961
  )
962
962
  )
963
963
  session.execute(stmt)
@@ -1002,8 +1002,8 @@ def delete_dids(
1002
1002
  exists(
1003
1003
  select(1)
1004
1004
  ).where(
1005
- and_(models.BadReplicas.scope == resolved_files_temp_table.scope,
1006
- models.BadReplicas.name == resolved_files_temp_table.name)
1005
+ and_(models.BadReplica.scope == resolved_files_temp_table.scope,
1006
+ models.BadReplica.name == resolved_files_temp_table.name)
1007
1007
  )
1008
1008
  )
1009
1009
  session.execute(stmt)
@@ -1085,13 +1085,13 @@ def delete_dids(
1085
1085
 
1086
1086
  with METRICS.timer('delete_dids.dids_followed'):
1087
1087
  stmt = delete(
1088
- models.DidsFollowed
1088
+ models.DidFollowed
1089
1089
  ).where(
1090
1090
  exists(
1091
1091
  select(1)
1092
1092
  ).where(
1093
- and_(models.DidsFollowed.scope == temp_table.scope,
1094
- models.DidsFollowed.name == temp_table.name)
1093
+ and_(models.DidFollowed.scope == temp_table.scope,
1094
+ models.DidFollowed.name == temp_table.name)
1095
1095
  )
1096
1096
  ).execution_options(
1097
1097
  synchronize_session=False
@@ -2655,8 +2655,8 @@ def add_dids_to_followed(
2655
2655
  )
2656
2656
  did = session.execute(stmt).scalar_one()
2657
2657
  # Add the queried to the followed table.
2658
- new_did_followed = models.DidsFollowed(scope=did.scope, name=did.name, account=account,
2659
- did_type=did.did_type)
2658
+ new_did_followed = models.DidFollowed(scope=did.scope, name=did.name, account=account,
2659
+ did_type=did.did_type)
2660
2660
 
2661
2661
  new_did_followed.save(session=session, flush=False)
2662
2662
 
@@ -2681,10 +2681,10 @@ def get_users_following_did(
2681
2681
  """
2682
2682
  try:
2683
2683
  stmt = select(
2684
- models.DidsFollowed
2684
+ models.DidFollowed
2685
2685
  ).where(
2686
- and_(models.DidsFollowed.scope == scope,
2687
- models.DidsFollowed.name == name)
2686
+ and_(models.DidFollowed.scope == scope,
2687
+ models.DidFollowed.name == name)
2688
2688
  )
2689
2689
  for user in session.execute(stmt).scalars().all():
2690
2690
  # Return a dictionary of users to be rendered as json.
@@ -2731,11 +2731,11 @@ def remove_dids_from_followed(
2731
2731
  try:
2732
2732
  for did in dids:
2733
2733
  stmt = delete(
2734
- models.DidsFollowed
2734
+ models.DidFollowed
2735
2735
  ).where(
2736
- and_(models.DidsFollowed.scope == did['scope'],
2737
- models.DidsFollowed.name == did['name'],
2738
- models.DidsFollowed.account == account)
2736
+ and_(models.DidFollowed.scope == did['scope'],
2737
+ models.DidFollowed.name == did['name'],
2738
+ models.DidFollowed.account == account)
2739
2739
  ).execution_options(
2740
2740
  synchronize_session=False
2741
2741
  )
@@ -2754,7 +2754,7 @@ def trigger_event(
2754
2754
  session: "Session"
2755
2755
  ) -> None:
2756
2756
  """
2757
- Records changes occurring in the did to the FollowEvents table
2757
+ Records changes occurring in the did to the FollowEvent table
2758
2758
 
2759
2759
  :param scope: The scope name.
2760
2760
  :param name: The data identifier name.
@@ -2764,15 +2764,15 @@ def trigger_event(
2764
2764
  """
2765
2765
  try:
2766
2766
  stmt = select(
2767
- models.DidsFollowed
2767
+ models.DidFollowed
2768
2768
  ).where(
2769
- and_(models.DidsFollowed.scope == scope,
2770
- models.DidsFollowed.name == name)
2769
+ and_(models.DidFollowed.scope == scope,
2770
+ models.DidFollowed.name == name)
2771
2771
  )
2772
2772
  for did in session.execute(stmt).scalars().all():
2773
2773
  # Create a new event using the specified parameters.
2774
- new_event = models.FollowEvents(scope=scope, name=name, account=did.account,
2775
- did_type=did.did_type, event_type=event_type, payload=payload)
2774
+ new_event = models.FollowEvent(scope=scope, name=name, account=did.account,
2775
+ did_type=did.did_type, event_type=event_type, payload=payload)
2776
2776
  new_event.save(session=session, flush=False)
2777
2777
 
2778
2778
  session.flush()
@@ -2792,11 +2792,11 @@ def create_reports(
2792
2792
 
2793
2793
  :param session: The database session in use.
2794
2794
  """
2795
- # Query the FollowEvents table
2795
+ # Query the FollowEvent table
2796
2796
  stmt = select(
2797
- models.FollowEvents
2797
+ models.FollowEvent
2798
2798
  ).order_by(
2799
- models.FollowEvents.created_at
2799
+ models.FollowEvent.created_at
2800
2800
  )
2801
2801
 
2802
2802
  # Use heartbeat mechanism to select a chunk of events based on the hashed account
@@ -2821,11 +2821,11 @@ def create_reports(
2821
2821
  account = event.account
2822
2822
  # Clean up the event after creating the report
2823
2823
  stmt = delete(
2824
- models.FollowEvents
2824
+ models.FollowEvent
2825
2825
  ).where(
2826
- and_(models.FollowEvents.scope == event.scope,
2827
- models.FollowEvents.name == event.name,
2828
- models.FollowEvents.account == event.account)
2826
+ and_(models.FollowEvent.scope == event.scope,
2827
+ models.FollowEvent.name == event.name,
2828
+ models.FollowEvent.account == event.account)
2829
2829
  ).execution_options(
2830
2830
  synchronize_session=False
2831
2831
  )
@@ -61,8 +61,10 @@ for meta_module_path in METADATA_PLUGIN_MODULE_PATHS:
61
61
  base_class = meta_module_path.split(".")[-1]
62
62
  metadata_plugin_module = getattr(importlib.import_module(base_module), base_class)()
63
63
  METADATA_PLUGIN_MODULES.append(metadata_plugin_module)
64
- except ImportError:
64
+ except ModuleNotFoundError:
65
65
  raise exception.PolicyPackageNotFound('Module ' + meta_module_path + ' not found')
66
+ except ImportError:
67
+ raise exception.ErrorLoadingPolicyPackage('An error occurred while loading module ' + meta_module_path)
66
68
 
67
69
  # Set restricted character set for metadata in form character: reason
68
70
  #
@@ -20,7 +20,7 @@ from sqlalchemy import and_, delete, func, select, update
20
20
 
21
21
  from rucio.common.exception import DatabaseException
22
22
  from rucio.common.utils import pid_exists
23
- from rucio.db.sqla.models import Heartbeats
23
+ from rucio.db.sqla.models import Heartbeat
24
24
  from rucio.db.sqla.session import read_session, transactional_session
25
25
 
26
26
  if TYPE_CHECKING:
@@ -93,36 +93,36 @@ def _sanity_check(
93
93
  :param session: The database session in use.
94
94
  """
95
95
  base_stmt = select(
96
- Heartbeats.pid
96
+ Heartbeat.pid
97
97
  ).distinct(
98
98
  ).where(
99
- Heartbeats.hostname == hostname
99
+ Heartbeat.hostname == hostname
100
100
  )
101
101
  if executable:
102
102
  if not hash_executable:
103
103
  hash_executable = calc_hash(executable)
104
104
 
105
105
  stmt = base_stmt.where(
106
- Heartbeats.executable == hash_executable
106
+ Heartbeat.executable == hash_executable
107
107
  )
108
108
  for pid in session.execute(stmt).scalars().all():
109
109
  if not pid_exists(pid):
110
110
  stmt = delete(
111
- Heartbeats
111
+ Heartbeat
112
112
  ).where(
113
- and_(Heartbeats.executable == hash_executable,
114
- Heartbeats.hostname == hostname,
115
- Heartbeats.pid == pid)
113
+ and_(Heartbeat.executable == hash_executable,
114
+ Heartbeat.hostname == hostname,
115
+ Heartbeat.pid == pid)
116
116
  )
117
117
  session.execute(stmt)
118
118
  else:
119
119
  for pid in session.execute(base_stmt).scalars().all():
120
120
  if not pid_exists(pid):
121
121
  stmt = delete(
122
- Heartbeats
122
+ Heartbeat
123
123
  ).where(
124
- and_(Heartbeats.hostname == hostname,
125
- Heartbeats.pid == pid)
124
+ and_(Heartbeat.hostname == hostname,
125
+ Heartbeat.pid == pid)
126
126
  )
127
127
  session.execute(stmt)
128
128
 
@@ -172,45 +172,45 @@ def live(
172
172
 
173
173
  # upsert the heartbeat
174
174
  stmt = update(
175
- Heartbeats
175
+ Heartbeat
176
176
  ).where(
177
- and_(Heartbeats.executable == hash_executable,
178
- Heartbeats.hostname == hostname,
179
- Heartbeats.pid == pid,
180
- Heartbeats.thread_id == thread_id)
177
+ and_(Heartbeat.executable == hash_executable,
178
+ Heartbeat.hostname == hostname,
179
+ Heartbeat.pid == pid,
180
+ Heartbeat.thread_id == thread_id)
181
181
  ).values({
182
- Heartbeats.updated_at: datetime.datetime.utcnow(),
183
- Heartbeats.payload: payload
182
+ Heartbeat.updated_at: datetime.datetime.utcnow(),
183
+ Heartbeat.payload: payload
184
184
  })
185
185
  if not session.execute(stmt).rowcount:
186
- Heartbeats(executable=hash_executable,
187
- readable=executable[:Heartbeats.readable.property.columns[0].type.length],
188
- hostname=hostname,
189
- pid=pid,
190
- thread_id=thread_id,
191
- thread_name=thread_name,
192
- payload=payload).save(session=session)
186
+ Heartbeat(executable=hash_executable,
187
+ readable=executable[:Heartbeat.readable.property.columns[0].type.length],
188
+ hostname=hostname,
189
+ pid=pid,
190
+ thread_id=thread_id,
191
+ thread_name=thread_name,
192
+ payload=payload).save(session=session)
193
193
 
194
194
  # assign thread identifier
195
195
  stmt = select(
196
- Heartbeats.hostname,
197
- Heartbeats.pid,
198
- Heartbeats.thread_id
196
+ Heartbeat.hostname,
197
+ Heartbeat.pid,
198
+ Heartbeat.thread_id
199
199
  ).with_hint(
200
- Heartbeats,
200
+ Heartbeat,
201
201
  'INDEX(HEARTBEATS HEARTBEATS_PK)',
202
202
  'oracle'
203
203
  ).where(
204
- and_(Heartbeats.executable == hash_executable,
205
- Heartbeats.updated_at >= datetime.datetime.utcnow() - datetime.timedelta(seconds=older_than))
204
+ and_(Heartbeat.executable == hash_executable,
205
+ Heartbeat.updated_at >= datetime.datetime.utcnow() - datetime.timedelta(seconds=older_than))
206
206
  ).group_by(
207
- Heartbeats.hostname,
208
- Heartbeats.pid,
209
- Heartbeats.thread_id
207
+ Heartbeat.hostname,
208
+ Heartbeat.pid,
209
+ Heartbeat.thread_id
210
210
  ).order_by(
211
- Heartbeats.hostname,
212
- Heartbeats.pid,
213
- Heartbeats.thread_id
211
+ Heartbeat.hostname,
212
+ Heartbeat.pid,
213
+ Heartbeat.thread_id
214
214
  )
215
215
  result = session.execute(stmt).all()
216
216
 
@@ -252,17 +252,17 @@ def die(
252
252
  hash_executable = calc_hash(executable)
253
253
 
254
254
  stmt = delete(
255
- Heartbeats
255
+ Heartbeat
256
256
  ).where(
257
- and_(Heartbeats.executable == hash_executable,
258
- Heartbeats.hostname == hostname,
259
- Heartbeats.pid == pid,
260
- Heartbeats.thread_id == thread.ident)
257
+ and_(Heartbeat.executable == hash_executable,
258
+ Heartbeat.hostname == hostname,
259
+ Heartbeat.pid == pid,
260
+ Heartbeat.thread_id == thread.ident)
261
261
  )
262
262
 
263
263
  if older_than:
264
264
  stmt = stmt.where(
265
- Heartbeats.updated_at < datetime.datetime.utcnow() - datetime.timedelta(seconds=older_than)
265
+ Heartbeat.updated_at < datetime.datetime.utcnow() - datetime.timedelta(seconds=older_than)
266
266
  )
267
267
  session.execute(stmt)
268
268
 
@@ -277,12 +277,12 @@ def cardiac_arrest(older_than: Optional[int] = None, *, session: "Session") -> N
277
277
  """
278
278
 
279
279
  stmt = delete(
280
- Heartbeats
280
+ Heartbeat
281
281
  )
282
282
 
283
283
  if older_than:
284
284
  stmt = stmt.where(
285
- Heartbeats.updated_at < datetime.datetime.utcnow() - datetime.timedelta(seconds=older_than)
285
+ Heartbeat.updated_at < datetime.datetime.utcnow() - datetime.timedelta(seconds=older_than)
286
286
  )
287
287
  session.execute(stmt)
288
288
 
@@ -298,17 +298,17 @@ def list_heartbeats(*, session: "Session") -> list["HeartbeatDict"]:
298
298
  """
299
299
 
300
300
  stmt = select(
301
- Heartbeats.readable,
302
- Heartbeats.hostname,
303
- Heartbeats.pid,
304
- Heartbeats.thread_name,
305
- Heartbeats.updated_at,
306
- Heartbeats.created_at,
307
- Heartbeats.payload
301
+ Heartbeat.readable,
302
+ Heartbeat.hostname,
303
+ Heartbeat.pid,
304
+ Heartbeat.thread_name,
305
+ Heartbeat.updated_at,
306
+ Heartbeat.created_at,
307
+ Heartbeat.payload
308
308
  ).order_by(
309
- Heartbeats.readable,
310
- Heartbeats.hostname,
311
- Heartbeats.thread_name
309
+ Heartbeat.readable,
310
+ Heartbeat.hostname,
311
+ Heartbeat.thread_name
312
312
  )
313
313
 
314
314
  result = session.execute(stmt).all()
@@ -340,15 +340,15 @@ def list_payload_counts(
340
340
  if not hash_executable:
341
341
  hash_executable = calc_hash(executable)
342
342
  stmt = select(
343
- Heartbeats.payload,
344
- func.count(Heartbeats.payload)
343
+ Heartbeat.payload,
344
+ func.count(Heartbeat.payload)
345
345
  ).where(
346
- and_(Heartbeats.executable == hash_executable,
347
- Heartbeats.updated_at >= datetime.datetime.utcnow() - datetime.timedelta(seconds=older_than))
346
+ and_(Heartbeat.executable == hash_executable,
347
+ Heartbeat.updated_at >= datetime.datetime.utcnow() - datetime.timedelta(seconds=older_than))
348
348
  ).group_by(
349
- Heartbeats.payload
349
+ Heartbeat.payload
350
350
  ).order_by(
351
- Heartbeats.payload
351
+ Heartbeat.payload
352
352
  )
353
353
 
354
354
  return dict((payload, count) for payload, count in session.execute(stmt).all() if payload)
@@ -56,9 +56,9 @@ def list_exceptions(
56
56
 
57
57
  state_clause = []
58
58
  if states:
59
- state_clause = [models.LifetimeExceptions.state == state for state in states]
59
+ state_clause = [models.LifetimeException.state == state for state in states]
60
60
 
61
- query = select(models.LifetimeExceptions)
61
+ query = select(models.LifetimeException)
62
62
  if state_clause != []:
63
63
  query = query.where(or_(*state_clause))
64
64
  if exception_id:
@@ -201,8 +201,8 @@ def __add_exception(
201
201
  did_type = DIDType[did['did_type']]
202
202
  else:
203
203
  did_type = did['did_type']
204
- new_exception = models.LifetimeExceptions(id=exception_id, scope=did['scope'], name=did['name'], did_type=did_type,
205
- account=account, pattern=pattern, comments=reason, state=LifetimeExceptionsState.WAITING, expires_at=lifetime)
204
+ new_exception = models.LifetimeException(id=exception_id, scope=did['scope'], name=did['name'], did_type=did_type,
205
+ account=account, pattern=pattern, comments=reason, state=LifetimeExceptionsState.WAITING, expires_at=lifetime)
206
206
  if len(text) < 3000:
207
207
  text += '%s %s %s\n' % (str(did_type), did['scope'], did['name'])
208
208
  else:
@@ -250,9 +250,9 @@ def update_exception(
250
250
  raise UnsupportedOperation
251
251
 
252
252
  query = update(
253
- models.LifetimeExceptions
253
+ models.LifetimeException
254
254
  ).where(
255
- models.LifetimeExceptions.id == exception_id
255
+ models.LifetimeException.id == exception_id
256
256
  ).values(
257
257
  state=state,
258
258
  updated_at=datetime.utcnow()
@@ -121,7 +121,7 @@ def add_value(key: str, value: str, *, session: "Session") -> None:
121
121
  :raises KeyNotFound: Key not in metadata conventions table
122
122
  :raises InvalidValueForKey: Value conflicts with rse expression for key values or does not have the correct type
123
123
  """
124
- new_value = models.DIDMetaConventionsConstraints(key=key, value=value)
124
+ new_value = models.DIDMetaConventionsConstraint(key=key, value=value)
125
125
  try:
126
126
  new_value.save(session=session)
127
127
  except IntegrityError as error:
@@ -170,9 +170,9 @@ def list_values(key: str, *, session: "Session") -> list[str]:
170
170
  :returns: A list containing all values.
171
171
  """
172
172
  statement = select(
173
- models.DIDMetaConventionsConstraints.value
173
+ models.DIDMetaConventionsConstraint.value
174
174
  ).where(
175
- models.DIDMetaConventionsConstraints.key == key
175
+ models.DIDMetaConventionsConstraint.key == key
176
176
  )
177
177
  return list(session.execute(statement).scalars().all())
178
178
 
@@ -193,10 +193,10 @@ def validate_meta(meta: dict, did_type: DIDType, *, session: "Session") -> None:
193
193
  if did_type == DIDType.DATASET and key in meta:
194
194
  try:
195
195
  statement = select(
196
- models.DIDMetaConventionsConstraints.value
196
+ models.DIDMetaConventionsConstraint.value
197
197
  ).where(
198
- and_(models.DIDMetaConventionsConstraints.value == meta[key],
199
- models.DIDMetaConventionsConstraints.key == key)
198
+ and_(models.DIDMetaConventionsConstraint.value == meta[key],
199
+ models.DIDMetaConventionsConstraint.key == key)
200
200
  )
201
201
  session.execute(statement).one()
202
202
  except NoResultFound:
@@ -16,6 +16,7 @@ import json
16
16
  import logging.handlers
17
17
  import random
18
18
  import socket
19
+ from typing import TYPE_CHECKING, Any, Union, overload
19
20
 
20
21
  import stomp
21
22
 
@@ -23,6 +24,9 @@ from rucio.common.config import config_get, config_get_int
23
24
  from rucio.common.logging import rucio_log_formatter
24
25
  from rucio.core.monitor import MetricManager
25
26
 
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+
26
30
  METRICS = MetricManager(module=__name__)
27
31
 
28
32
  CONFIG_COMMON_LOGLEVEL = getattr(logging, config_get('common', 'loglevel', raise_exception=False, default='DEBUG').upper())
@@ -79,14 +83,23 @@ for broker in BROKERS_RESOLVED:
79
83
  CONNS.append(stomp.Connection(host_and_ports=[(broker, PORT)], vhost=VHOST, reconnect_attempts_max=3))
80
84
 
81
85
 
82
- def date_handler(obj):
83
- '''
84
- '''
86
+ @overload
87
+ def date_handler(obj: "datetime") -> str:
88
+ ...
89
+
90
+
91
+ @overload
92
+ def date_handler(obj: object) -> object:
93
+ ...
94
+
95
+
96
+ def date_handler(obj: Any) -> Union[str, object]:
97
+ """ Format dates to ISO format. """
85
98
  return obj.isoformat() if hasattr(obj, 'isoformat') else obj
86
99
 
87
100
 
88
101
  @METRICS.count_it
89
- def trace(payload):
102
+ def trace(payload: dict[str, Any]) -> None:
90
103
  """
91
104
  Write a trace to the buffer log file and send it to active mq.
92
105
 
@@ -68,8 +68,10 @@ if not multivo:
68
68
 
69
69
  try:
70
70
  module = importlib.import_module(POLICY)
71
- except ImportError:
71
+ except ModuleNotFoundError:
72
72
  raise exception.PolicyPackageNotFound('Module ' + POLICY + ' not found')
73
+ except ImportError:
74
+ raise exception.ErrorLoadingPolicyPackage('An error occurred while loading module ' + POLICY)
73
75
 
74
76
  permission_modules["def"] = module
75
77
 
@@ -97,8 +99,10 @@ def load_permission_for_vo(vo: str) -> None:
97
99
 
98
100
  try:
99
101
  module = importlib.import_module(POLICY)
100
- except ImportError:
102
+ except ModuleNotFoundError:
101
103
  raise exception.PolicyPackageNotFound('Module ' + POLICY + ' not found')
104
+ except ImportError:
105
+ raise exception.ErrorLoadingPolicyPackage('An error occurred while loading module ' + POLICY)
102
106
 
103
107
  permission_modules[vo] = module
104
108