rucio 34.2.0__tar.gz → 34.4.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 (595) hide show
  1. {rucio-34.2.0 → rucio-34.4.0}/PKG-INFO +1 -1
  2. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio +2 -2
  3. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-admin +11 -10
  4. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-auditor +2 -2
  5. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-automatix +1 -1
  6. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-conveyor-finisher +1 -1
  7. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-conveyor-submitter +2 -2
  8. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-judge-evaluator +2 -2
  9. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-necromancer +1 -1
  10. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-oauth-manager +2 -2
  11. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-replica-recoverer +2 -2
  12. {rucio-34.2.0 → rucio-34.4.0}/etc/ldap.cfg.template +1 -1
  13. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/account.py +4 -4
  14. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/account_limit.py +1 -1
  15. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/config.py +11 -11
  16. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/did.py +29 -10
  17. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/exporter.py +2 -2
  18. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/heartbeat.py +16 -3
  19. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/importer.py +2 -2
  20. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/meta_conventions.py +4 -4
  21. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/permission.py +4 -4
  22. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/replica.py +4 -2
  23. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/rse.py +5 -6
  24. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/rule.py +4 -4
  25. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/scope.py +3 -4
  26. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/vo.py +16 -5
  27. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/accountclient.py +1 -1
  28. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/baseclient.py +7 -6
  29. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/didclient.py +1 -1
  30. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/downloadclient.py +67 -18
  31. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/replicaclient.py +13 -1
  32. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/rseclient.py +5 -5
  33. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/ruleclient.py +2 -1
  34. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/uploadclient.py +6 -5
  35. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/cache.py +3 -1
  36. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/config.py +37 -37
  37. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/constants.py +61 -1
  38. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/didtype.py +23 -20
  39. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/dumper/__init__.py +40 -25
  40. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/dumper/consistency.py +3 -3
  41. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/dumper/data_models.py +2 -2
  42. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/pcache.py +5 -5
  43. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/plugins.py +10 -9
  44. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/policy.py +4 -3
  45. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/schema/__init__.py +11 -7
  46. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/types.py +28 -1
  47. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/utils.py +21 -22
  48. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/account_counter.py +1 -1
  49. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/account_limit.py +1 -1
  50. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/authentication.py +84 -26
  51. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/credential.py +3 -2
  52. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/did.py +317 -81
  53. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/__init__.py +1 -1
  54. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/did_column_meta.py +2 -3
  55. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +58 -9
  56. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/filter_engine.py +27 -7
  57. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/json_meta.py +2 -3
  58. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/mongo_meta.py +3 -3
  59. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/postgres_meta.py +1 -1
  60. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/dirac.py +1 -1
  61. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/distance.py +2 -1
  62. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/heartbeat.py +80 -26
  63. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/identity.py +21 -9
  64. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/importer.py +3 -2
  65. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/lifetime_exception.py +3 -3
  66. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/lock.py +3 -2
  67. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/monitor.py +17 -9
  68. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/naming_convention.py +47 -14
  69. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/oidc.py +10 -10
  70. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/permission/__init__.py +11 -3
  71. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/permission/atlas.py +33 -32
  72. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/permission/belleii.py +4 -3
  73. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/permission/escape.py +5 -4
  74. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/permission/generic.py +79 -78
  75. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/permission/generic_multi_vo.py +6 -5
  76. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/quarantined_replica.py +1 -1
  77. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/replica.py +51 -21
  78. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/replica_sorter.py +1 -1
  79. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/request.py +7 -6
  80. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/rse.py +13 -11
  81. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/rse_counter.py +1 -1
  82. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/rse_expression_parser.py +4 -4
  83. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/rse_selector.py +35 -9
  84. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/rule.py +48 -40
  85. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/rule_grouping.py +78 -29
  86. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/scope.py +3 -2
  87. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/subscription.py +2 -3
  88. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/topology.py +18 -16
  89. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/transfer.py +12 -12
  90. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/vo.py +4 -5
  91. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/volatile_replica.py +1 -1
  92. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/auditor/__init__.py +4 -4
  93. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/auditor/srmdumps.py +10 -7
  94. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/automatix/automatix.py +1 -1
  95. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/badreplicas/minos.py +1 -1
  96. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/common.py +12 -10
  97. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +2 -1
  98. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/t2_background_rebalance.py +2 -1
  99. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +4 -3
  100. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/common.py +2 -2
  101. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/common.py +4 -3
  102. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/finisher.py +2 -2
  103. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/poller.py +4 -4
  104. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/stager.py +15 -14
  105. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/submitter.py +1 -1
  106. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/throttler.py +1 -1
  107. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/hermes/hermes.py +3 -1
  108. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/oauthmanager/oauthmanager.py +2 -2
  109. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/reaper/dark_reaper.py +13 -2
  110. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/reaper/reaper.py +9 -8
  111. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +75 -14
  112. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/config.py +3 -2
  113. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +2 -1
  114. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +3 -2
  115. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/storage/consistency/actions.py +1 -1
  116. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/transmogrifier/transmogrifier.py +6 -5
  117. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/__init__.py +16 -1
  118. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/models.py +1 -1
  119. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/session.py +2 -2
  120. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/util.py +41 -25
  121. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/bittorrent.py +1 -1
  122. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/cache.py +1 -1
  123. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/dummy.py +1 -1
  124. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/gfal.py +7 -7
  125. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/globus.py +6 -5
  126. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/gsiftp.py +2 -2
  127. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/http_cache.py +1 -1
  128. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/mock.py +1 -1
  129. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/ngarc.py +1 -1
  130. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/posix.py +8 -8
  131. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/protocol.py +13 -34
  132. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/rclone.py +4 -4
  133. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/rfio.py +4 -4
  134. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/srm.py +8 -8
  135. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/ssh.py +6 -6
  136. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/storm.py +2 -2
  137. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/webdav.py +12 -8
  138. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/xrootd.py +4 -4
  139. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/tests/common.py +3 -2
  140. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/tests/common_server.py +1 -1
  141. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/bittorrent.py +7 -6
  142. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/bittorrent_driver.py +2 -2
  143. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +4 -5
  144. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/fts3.py +18 -18
  145. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/fts3_plugins.py +5 -4
  146. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/globus.py +5 -4
  147. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/transfertool.py +1 -1
  148. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/vcsversion.py +3 -3
  149. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +1 -1
  150. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/accounts.py +2 -2
  151. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/auth.py +0 -13
  152. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/common.py +1 -1
  153. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/credentials.py +3 -3
  154. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/dids.py +13 -13
  155. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/import.py +1 -1
  156. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +3 -3
  157. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/main.py +1 -1
  158. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +2 -2
  159. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/replicas.py +3 -3
  160. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/requests.py +17 -17
  161. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/rses.py +12 -12
  162. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/rules.py +11 -4
  163. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +4 -4
  164. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio.egg-info/SOURCES.txt +0 -4
  165. rucio-34.4.0/pyproject.toml +132 -0
  166. {rucio-34.2.0 → rucio-34.4.0}/requirements.txt +1 -0
  167. {rucio-34.2.0 → rucio-34.4.0}/tests/test_account.py +3 -3
  168. {rucio-34.2.0 → rucio-34.4.0}/tests/test_authentication.py +3 -5
  169. {rucio-34.2.0 → rucio-34.4.0}/tests/test_bad_replica.py +1 -1
  170. {rucio-34.2.0 → rucio-34.4.0}/tests/test_bin_rucio.py +41 -41
  171. {rucio-34.2.0 → rucio-34.4.0}/tests/test_config.py +2 -2
  172. {rucio-34.2.0 → rucio-34.4.0}/tests/test_conveyor.py +26 -25
  173. {rucio-34.2.0 → rucio-34.4.0}/tests/test_conveyor_submitter.py +6 -5
  174. {rucio-34.2.0 → rucio-34.4.0}/tests/test_credential.py +2 -1
  175. {rucio-34.2.0 → rucio-34.4.0}/tests/test_dataset_replicas.py +1 -1
  176. {rucio-34.2.0 → rucio-34.4.0}/tests/test_dumper_data_model.py +2 -2
  177. {rucio-34.2.0 → rucio-34.4.0}/tests/test_identity.py +2 -2
  178. {rucio-34.2.0 → rucio-34.4.0}/tests/test_import_export.py +6 -5
  179. {rucio-34.2.0 → rucio-34.4.0}/tests/test_judge_repairer.py +1 -1
  180. {rucio-34.2.0 → rucio-34.4.0}/tests/test_multi_vo.py +6 -5
  181. {rucio-34.2.0 → rucio-34.4.0}/tests/test_oidc.py +9 -9
  182. {rucio-34.2.0 → rucio-34.4.0}/tests/test_preparer.py +7 -6
  183. {rucio-34.2.0 → rucio-34.4.0}/tests/test_reaper.py +1 -1
  184. {rucio-34.2.0 → rucio-34.4.0}/tests/test_replica.py +7 -6
  185. {rucio-34.2.0 → rucio-34.4.0}/tests/test_replica_recoverer.py +77 -4
  186. {rucio-34.2.0 → rucio-34.4.0}/tests/test_replica_sorting.py +3 -2
  187. {rucio-34.2.0 → rucio-34.4.0}/tests/test_request.py +6 -5
  188. {rucio-34.2.0 → rucio-34.4.0}/tests/test_root_proxy.py +3 -2
  189. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse.py +4 -3
  190. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_expression_parser.py +2 -2
  191. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_lfn2path.py +1 -1
  192. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rule.py +8 -7
  193. {rucio-34.2.0 → rucio-34.4.0}/tests/test_scope.py +2 -2
  194. {rucio-34.2.0 → rucio-34.4.0}/tests/test_subscription.py +4 -3
  195. {rucio-34.2.0 → rucio-34.4.0}/tests/test_transfer_plugins.py +1 -1
  196. {rucio-34.2.0 → rucio-34.4.0}/tests/test_upload.py +2 -1
  197. rucio-34.2.0/lib/rucio/common/schema/cms.py +0 -477
  198. rucio-34.2.0/lib/rucio/common/schema/lsst.py +0 -422
  199. rucio-34.2.0/lib/rucio/core/permission/cms.py +0 -1167
  200. rucio-34.2.0/pyproject.toml +0 -61
  201. rucio-34.2.0/tests/test_schema_cms.py +0 -229
  202. {rucio-34.2.0 → rucio-34.4.0}/AUTHORS.rst +0 -0
  203. {rucio-34.2.0 → rucio-34.4.0}/ChangeLog +0 -0
  204. {rucio-34.2.0 → rucio-34.4.0}/LICENSE +0 -0
  205. {rucio-34.2.0 → rucio-34.4.0}/MANIFEST.in +0 -0
  206. {rucio-34.2.0 → rucio-34.4.0}/README.rst +0 -0
  207. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-abacus-account +0 -0
  208. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-abacus-collection-replica +0 -0
  209. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-abacus-rse +0 -0
  210. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-atropos +0 -0
  211. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-bb8 +0 -0
  212. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-c3po +0 -0
  213. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-cache-client +0 -0
  214. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-cache-consumer +0 -0
  215. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-conveyor-poller +0 -0
  216. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-conveyor-preparer +0 -0
  217. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-conveyor-receiver +0 -0
  218. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-conveyor-stager +0 -0
  219. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-conveyor-throttler +0 -0
  220. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-dark-reaper +0 -0
  221. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-dumper +0 -0
  222. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-follower +0 -0
  223. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-hermes +0 -0
  224. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-judge-cleaner +0 -0
  225. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-judge-injector +0 -0
  226. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-judge-repairer +0 -0
  227. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-kronos +0 -0
  228. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-minos +0 -0
  229. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-minos-temporary-expiration +0 -0
  230. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-reaper +0 -0
  231. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-rse-decommissioner +0 -0
  232. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-storage-consistency-actions +0 -0
  233. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-transmogrifier +0 -0
  234. {rucio-34.2.0 → rucio-34.4.0}/bin/rucio-undertaker +0 -0
  235. {rucio-34.2.0 → rucio-34.4.0}/etc/alembic.ini.template +0 -0
  236. {rucio-34.2.0 → rucio-34.4.0}/etc/alembic_offline.ini.template +0 -0
  237. {rucio-34.2.0 → rucio-34.4.0}/etc/globus-config.yml.template +0 -0
  238. {rucio-34.2.0 → rucio-34.4.0}/etc/mail_templates/rule_approval_request.tmpl +0 -0
  239. {rucio-34.2.0 → rucio-34.4.0}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
  240. {rucio-34.2.0 → rucio-34.4.0}/etc/mail_templates/rule_approved_user.tmpl +0 -0
  241. {rucio-34.2.0 → rucio-34.4.0}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
  242. {rucio-34.2.0 → rucio-34.4.0}/etc/mail_templates/rule_denied_user.tmpl +0 -0
  243. {rucio-34.2.0 → rucio-34.4.0}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
  244. {rucio-34.2.0 → rucio-34.4.0}/etc/rse-accounts.cfg.template +0 -0
  245. {rucio-34.2.0 → rucio-34.4.0}/etc/rucio.cfg.atlas.client.template +0 -0
  246. {rucio-34.2.0 → rucio-34.4.0}/etc/rucio.cfg.template +0 -0
  247. {rucio-34.2.0 → rucio-34.4.0}/etc/rucio_multi_vo.cfg.template +0 -0
  248. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/__init__.py +0 -0
  249. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/alembicrevision.py +0 -0
  250. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/__init__.py +0 -0
  251. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/authentication.py +0 -0
  252. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/credential.py +0 -0
  253. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/dirac.py +0 -0
  254. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/identity.py +0 -0
  255. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/lifetime_exception.py +0 -0
  256. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/lock.py +0 -0
  257. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/quarantined_replica.py +0 -0
  258. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/request.py +0 -0
  259. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/api/subscription.py +0 -0
  260. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/__init__.py +0 -0
  261. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/accountlimitclient.py +0 -0
  262. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/client.py +0 -0
  263. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/configclient.py +0 -0
  264. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/credentialclient.py +0 -0
  265. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/diracclient.py +0 -0
  266. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/exportclient.py +0 -0
  267. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/fileclient.py +0 -0
  268. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/importclient.py +0 -0
  269. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/lifetimeclient.py +0 -0
  270. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/lockclient.py +0 -0
  271. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/metaconventionsclient.py +0 -0
  272. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/pingclient.py +0 -0
  273. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/requestclient.py +0 -0
  274. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/scopeclient.py +0 -0
  275. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/subscriptionclient.py +0 -0
  276. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/client/touchclient.py +0 -0
  277. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/__init__.py +0 -0
  278. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/constraints.py +0 -0
  279. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/dumper/path_parsing.py +0 -0
  280. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/exception.py +0 -0
  281. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/extra.py +0 -0
  282. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/logging.py +0 -0
  283. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/schema/atlas.py +0 -0
  284. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/schema/belleii.py +0 -0
  285. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/schema/domatpc.py +0 -0
  286. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/schema/escape.py +0 -0
  287. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/schema/generic.py +0 -0
  288. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
  289. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/schema/icecube.py +0 -0
  290. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/stomp_utils.py +0 -0
  291. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/stopwatch.py +0 -0
  292. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/common/test_rucio_server.py +0 -0
  293. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/__init__.py +0 -0
  294. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/account.py +0 -0
  295. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/config.py +0 -0
  296. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/exporter.py +0 -0
  297. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/message.py +0 -0
  298. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/meta_conventions.py +0 -0
  299. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/nongrid_trace.py +0 -0
  300. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/core/trace.py +0 -0
  301. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/__init__.py +0 -0
  302. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/abacus/__init__.py +0 -0
  303. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/abacus/account.py +0 -0
  304. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
  305. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/abacus/rse.py +0 -0
  306. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/atropos/__init__.py +0 -0
  307. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/atropos/atropos.py +0 -0
  308. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/auditor/hdfs.py +0 -0
  309. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/automatix/__init__.py +0 -0
  310. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/badreplicas/__init__.py +0 -0
  311. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +0 -0
  312. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/badreplicas/necromancer.py +0 -0
  313. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/__init__.py +0 -0
  314. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/bb8.py +0 -0
  315. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/__init__.py +0 -0
  316. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/__init__.py +0 -0
  317. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/simple.py +0 -0
  318. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space.py +0 -0
  319. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -0
  320. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/c3po.py +0 -0
  321. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/__init__.py +0 -0
  322. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/agis.py +0 -0
  323. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/free_space.py +0 -0
  324. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/jedi_did.py +0 -0
  325. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/mock_did.py +0 -0
  326. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/network_metrics.py +0 -0
  327. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/workload.py +0 -0
  328. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/__init__.py +0 -0
  329. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/dataset_cache.py +0 -0
  330. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -0
  331. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/expiring_list.py +0 -0
  332. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/popularity.py +0 -0
  333. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/timeseries.py +0 -0
  334. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/cache/__init__.py +0 -0
  335. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/cache/consumer.py +0 -0
  336. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/__init__.py +0 -0
  337. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/preparer.py +0 -0
  338. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/receiver.py +0 -0
  339. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/follower/__init__.py +0 -0
  340. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/follower/follower.py +0 -0
  341. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/hermes/__init__.py +0 -0
  342. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/judge/__init__.py +0 -0
  343. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/judge/cleaner.py +0 -0
  344. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/judge/evaluator.py +0 -0
  345. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/judge/injector.py +0 -0
  346. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/judge/repairer.py +0 -0
  347. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/oauthmanager/__init__.py +0 -0
  348. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/reaper/__init__.py +0 -0
  349. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/replicarecoverer/__init__.py +0 -0
  350. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/__init__.py +0 -0
  351. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
  352. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
  353. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
  354. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/storage/__init__.py +0 -0
  355. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/storage/consistency/__init__.py +0 -0
  356. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/tracer/__init__.py +0 -0
  357. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/tracer/kronos.py +0 -0
  358. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/transmogrifier/__init__.py +0 -0
  359. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/undertaker/__init__.py +0 -0
  360. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/daemons/undertaker/undertaker.py +0 -0
  361. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/__init__.py +0 -0
  362. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/constants.py +0 -0
  363. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/__init__.py +0 -0
  364. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
  365. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
  366. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
  367. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
  368. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
  369. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
  370. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
  371. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
  372. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
  373. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
  374. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
  375. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
  376. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
  377. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
  378. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
  379. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
  380. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
  381. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
  382. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
  383. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
  384. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
  385. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
  386. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
  387. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
  388. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
  389. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
  390. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
  391. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
  392. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
  393. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
  394. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
  395. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
  396. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
  397. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
  398. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
  399. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
  400. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
  401. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
  402. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
  403. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
  404. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +0 -0
  405. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
  406. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
  407. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
  408. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
  409. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
  410. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
  411. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
  412. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
  413. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
  414. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
  415. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
  416. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
  417. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
  418. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
  419. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
  420. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
  421. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
  422. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
  423. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
  424. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
  425. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
  426. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
  427. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
  428. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
  429. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
  430. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +0 -0
  431. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
  432. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
  433. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
  434. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
  435. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
  436. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
  437. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
  438. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
  439. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
  440. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
  441. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
  442. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
  443. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
  444. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
  445. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
  446. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
  447. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
  448. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
  449. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
  450. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
  451. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
  452. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
  453. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
  454. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
  455. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
  456. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
  457. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
  458. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
  459. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
  460. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
  461. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
  462. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
  463. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
  464. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
  465. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
  466. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
  467. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
  468. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
  469. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
  470. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
  471. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
  472. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
  473. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
  474. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -0
  475. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
  476. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
  477. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
  478. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
  479. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
  480. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
  481. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
  482. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
  483. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
  484. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
  485. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
  486. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
  487. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
  488. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
  489. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
  490. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
  491. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/sautils.py +0 -0
  492. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/db/sqla/types.py +0 -0
  493. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/__init__.py +0 -0
  494. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/protocols/__init__.py +0 -0
  495. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/rse/rsemanager.py +0 -0
  496. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/tests/__init__.py +0 -0
  497. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/__init__.py +0 -0
  498. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/globus_library.py +0 -0
  499. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/transfertool/mock.py +0 -0
  500. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/version.py +0 -0
  501. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/__init__.py +0 -0
  502. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/__init__.py +0 -0
  503. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
  504. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
  505. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
  506. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/archives.py +0 -0
  507. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/config.py +0 -0
  508. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/dirac.py +0 -0
  509. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/export.py +0 -0
  510. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +0 -0
  511. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/identities.py +0 -0
  512. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/locks.py +0 -0
  513. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
  514. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
  515. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
  516. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/redirect.py +0 -0
  517. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/scopes.py +0 -0
  518. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
  519. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
  520. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
  521. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/vos.py +0 -0
  522. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/main.py +0 -0
  523. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/metrics.py +0 -0
  524. {rucio-34.2.0 → rucio-34.4.0}/lib/rucio/web/rest/ping.py +0 -0
  525. {rucio-34.2.0 → rucio-34.4.0}/pylintrc +0 -0
  526. {rucio-34.2.0 → rucio-34.4.0}/setup.cfg +0 -0
  527. {rucio-34.2.0 → rucio-34.4.0}/setup.py +0 -0
  528. {rucio-34.2.0 → rucio-34.4.0}/setuputil.py +0 -0
  529. {rucio-34.2.0 → rucio-34.4.0}/tests/test_abacus_account.py +0 -0
  530. {rucio-34.2.0 → rucio-34.4.0}/tests/test_abacus_collection_replica.py +0 -0
  531. {rucio-34.2.0 → rucio-34.4.0}/tests/test_abacus_rse.py +0 -0
  532. {rucio-34.2.0 → rucio-34.4.0}/tests/test_account_limits.py +0 -0
  533. {rucio-34.2.0 → rucio-34.4.0}/tests/test_api_external_representation.py +0 -0
  534. {rucio-34.2.0 → rucio-34.4.0}/tests/test_archive.py +0 -0
  535. {rucio-34.2.0 → rucio-34.4.0}/tests/test_auditor.py +0 -0
  536. {rucio-34.2.0 → rucio-34.4.0}/tests/test_auditor_hdfs.py +0 -0
  537. {rucio-34.2.0 → rucio-34.4.0}/tests/test_auditor_srmdumps.py +0 -0
  538. {rucio-34.2.0 → rucio-34.4.0}/tests/test_automatix.py +0 -0
  539. {rucio-34.2.0 → rucio-34.4.0}/tests/test_bb8.py +0 -0
  540. {rucio-34.2.0 → rucio-34.4.0}/tests/test_belleii.py +0 -0
  541. {rucio-34.2.0 → rucio-34.4.0}/tests/test_boolean.py +0 -0
  542. {rucio-34.2.0 → rucio-34.4.0}/tests/test_clients.py +0 -0
  543. {rucio-34.2.0 → rucio-34.4.0}/tests/test_common_types.py +0 -0
  544. {rucio-34.2.0 → rucio-34.4.0}/tests/test_counter.py +0 -0
  545. {rucio-34.2.0 → rucio-34.4.0}/tests/test_curl.py +0 -0
  546. {rucio-34.2.0 → rucio-34.4.0}/tests/test_daemons.py +0 -0
  547. {rucio-34.2.0 → rucio-34.4.0}/tests/test_db.py +0 -0
  548. {rucio-34.2.0 → rucio-34.4.0}/tests/test_did.py +0 -0
  549. {rucio-34.2.0 → rucio-34.4.0}/tests/test_did_meta_plugins.py +0 -0
  550. {rucio-34.2.0 → rucio-34.4.0}/tests/test_didtype.py +0 -0
  551. {rucio-34.2.0 → rucio-34.4.0}/tests/test_download.py +0 -0
  552. {rucio-34.2.0 → rucio-34.4.0}/tests/test_dumper.py +0 -0
  553. {rucio-34.2.0 → rucio-34.4.0}/tests/test_dumper_consistency.py +0 -0
  554. {rucio-34.2.0 → rucio-34.4.0}/tests/test_dumper_path_parsing.py +0 -0
  555. {rucio-34.2.0 → rucio-34.4.0}/tests/test_filter_engine.py +0 -0
  556. {rucio-34.2.0 → rucio-34.4.0}/tests/test_heartbeat.py +0 -0
  557. {rucio-34.2.0 → rucio-34.4.0}/tests/test_hermes.py +0 -0
  558. {rucio-34.2.0 → rucio-34.4.0}/tests/test_impl_upload_download.py +0 -0
  559. {rucio-34.2.0 → rucio-34.4.0}/tests/test_judge_cleaner.py +0 -0
  560. {rucio-34.2.0 → rucio-34.4.0}/tests/test_judge_evaluator.py +0 -0
  561. {rucio-34.2.0 → rucio-34.4.0}/tests/test_judge_injector.py +0 -0
  562. {rucio-34.2.0 → rucio-34.4.0}/tests/test_lifetime.py +0 -0
  563. {rucio-34.2.0 → rucio-34.4.0}/tests/test_message.py +0 -0
  564. {rucio-34.2.0 → rucio-34.4.0}/tests/test_meta_conventions.py +0 -0
  565. {rucio-34.2.0 → rucio-34.4.0}/tests/test_meta_did.py +0 -0
  566. {rucio-34.2.0 → rucio-34.4.0}/tests/test_module_import.py +0 -0
  567. {rucio-34.2.0 → rucio-34.4.0}/tests/test_monitor.py +0 -0
  568. {rucio-34.2.0 → rucio-34.4.0}/tests/test_naming_convention.py +0 -0
  569. {rucio-34.2.0 → rucio-34.4.0}/tests/test_oauthmanager.py +0 -0
  570. {rucio-34.2.0 → rucio-34.4.0}/tests/test_permission.py +0 -0
  571. {rucio-34.2.0 → rucio-34.4.0}/tests/test_pfns.py +0 -0
  572. {rucio-34.2.0 → rucio-34.4.0}/tests/test_ping.py +0 -0
  573. {rucio-34.2.0 → rucio-34.4.0}/tests/test_qos.py +0 -0
  574. {rucio-34.2.0 → rucio-34.4.0}/tests/test_quarantined_replica.py +0 -0
  575. {rucio-34.2.0 → rucio-34.4.0}/tests/test_redirect.py +0 -0
  576. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_protocol_gfal2.py +0 -0
  577. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
  578. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_protocol_posix.py +0 -0
  579. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_protocol_rclone.py +0 -0
  580. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_protocol_rsync.py +0 -0
  581. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_protocol_srm.py +0 -0
  582. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_protocol_ssh.py +0 -0
  583. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_protocol_webdav.py +0 -0
  584. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_protocol_xrootd.py +0 -0
  585. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rse_selector.py +0 -0
  586. {rucio-34.2.0 → rucio-34.4.0}/tests/test_rucio_server.py +0 -0
  587. {rucio-34.2.0 → rucio-34.4.0}/tests/test_throttler.py +0 -0
  588. {rucio-34.2.0 → rucio-34.4.0}/tests/test_tpc.py +0 -0
  589. {rucio-34.2.0 → rucio-34.4.0}/tests/test_trace.py +0 -0
  590. {rucio-34.2.0 → rucio-34.4.0}/tests/test_transfer.py +0 -0
  591. {rucio-34.2.0 → rucio-34.4.0}/tests/test_undertaker.py +0 -0
  592. {rucio-34.2.0 → rucio-34.4.0}/tests/test_utils.py +0 -0
  593. {rucio-34.2.0 → rucio-34.4.0}/tools/bootstrap.py +0 -0
  594. {rucio-34.2.0 → rucio-34.4.0}/tools/merge_rucio_configs.py +0 -0
  595. {rucio-34.2.0 → rucio-34.4.0}/tools/reset_database.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rucio
3
- Version: 34.2.0
3
+ Version: 34.4.0
4
4
  Summary: Rucio Package
5
5
  Home-page: https://rucio.cern.ch/
6
6
  Author: Rucio
@@ -166,7 +166,7 @@ def exception_handler(function):
166
166
  used_account = '%s (from rucio.cfg)' % config_get('client', 'account')
167
167
  except:
168
168
  pass
169
- try: # are we overriden by the environment?
169
+ try: # are we overridden by the environment?
170
170
  used_account = '%s (from RUCIO_ACCOUNT)' % os.environ['RUCIO_ACCOUNT']
171
171
  except:
172
172
  pass
@@ -1550,7 +1550,7 @@ def list_rse_attributes(args):
1550
1550
  """
1551
1551
  client = get_client(args)
1552
1552
  attributes = client.list_rse_attributes(rse=args.rse)
1553
- table = [(k + ':', str(v)) for (k, v) in sorted(attributes.items())] # columns hav mixed datatypes
1553
+ table = [(k + ':', str(v)) for (k, v) in sorted(attributes.items())] # columns have mixed datatypes
1554
1554
  print(tabulate(table, tablefmt='plain', disable_numparse=True)) # disabling number parsing
1555
1555
  return SUCCESS
1556
1556
 
@@ -33,6 +33,7 @@ from tabulate import tabulate
33
33
  from rucio import version
34
34
  from rucio.client import Client
35
35
  from rucio.common.config import config_get
36
+ from rucio.common.constants import RseAttr
36
37
  from rucio.common.exception import (
37
38
  AccessDenied,
38
39
  AccountNotFound,
@@ -385,7 +386,7 @@ def set_limits(args):
385
386
  try:
386
387
  byte_limit = int(limit_input)
387
388
  except ValueError:
388
- logger.error('The limit could not be set. Either you misspelled infinity or your input could not be converted to integer or you used a wrong pattern. Please use a format like 10GB with B,KB,MB,GB,TB,PB as units (not case sensistive)')
389
+ logger.error('The limit could not be set. Either you misspelled infinity or your input could not be converted to integer or you used a wrong pattern. Please use a format like 10GB with B,KB,MB,GB,TB,PB as units (not case sensitive)')
389
390
  return FAILURE
390
391
 
391
392
  client.set_account_limit(account=args.account, rse=args.rse, bytes_=byte_limit, locality=locality)
@@ -1244,7 +1245,7 @@ def list_pfns(args):
1244
1245
  if not rse_info['deterministic']:
1245
1246
  logger.warning('This is a non-deterministic site, so the real PFN might be different from the on suggested')
1246
1247
  rse_attr = client.list_rse_attributes(rse)
1247
- naming_convention = rse_attr.get('naming_convention', None)
1248
+ naming_convention = rse_attr.get(RseAttr.NAMING_CONVENTION, None)
1248
1249
  parents = [did for did in client.list_parent_dids(scope, name)]
1249
1250
  if len(parents) > 1:
1250
1251
  logger.warning('The file has multiple parents')
@@ -1383,7 +1384,7 @@ def get_parser():
1383
1384
  oparser.add_argument('--oidc-refresh-lifetime', dest='oidc_refresh_lifetime', default=None, help='Max lifetime in hours for this an access token will be refreshed by asynchronous Rucio daemon. '
1384
1385
  + 'If not specified, refresh will be stopped after 4 days. This option is effective only if --oidc-scope includes offline_access scope for a refresh token to be granted to Rucio.') # NOQA: W503
1385
1386
  oparser.add_argument('--oidc-issuer', dest='oidc_issuer', default=None,
1386
- help='Defines which Identity Provider is goign to be used. The issuer string must correspond '
1387
+ help='Defines which Identity Provider is going to be used. The issuer string must correspond '
1387
1388
  + 'to the keys configured in the /etc/idpsecrets.json auth server configuration file.') # NOQA: W503
1388
1389
 
1389
1390
  # Options for the x509 auth_strategy
@@ -1432,7 +1433,7 @@ def get_parser():
1432
1433
  '"""""""""""""\n'
1433
1434
  '::\n'
1434
1435
  '\n'
1435
- ' $ rucio-admin account list --type \'user\'\n'
1436
+ ' $ rucio-admin account list --type USER\n'
1436
1437
  '\n')
1437
1438
  list_account_parser.add_argument('--type', dest='account_type', action='store', help='Account Type (USER, GROUP, SERVICE)')
1438
1439
  list_account_parser.add_argument('--id', dest='identity', action='store', help='Identity (e.g. DN)')
@@ -1708,7 +1709,7 @@ def get_parser():
1708
1709
  ' $ rucio-admin identity delete --account jdoe --type X509 --id \'CN=Joe Doe,CN=707658,CN=jdoe,OU=Users,OU=Organic Units,DC=cern,DC=ch\'\n'
1709
1710
  ' Deleted identity: CN=Joe Doe,CN=707658,CN=jdoe,OU=Users,OU=Organic Units,DC=cern,DC=ch\n'
1710
1711
  '\n'
1711
- 'Note: if the identity was accidentaly deleted, use add option.\n'
1712
+ 'Note: if the identity was accidentally deleted, use add option.\n'
1712
1713
  '\n')
1713
1714
  identity_delete_parser.set_defaults(which='identity_delete')
1714
1715
  identity_delete_parser.add_argument('--account', dest='account', action='store', help='Account name', required=True)
@@ -1956,7 +1957,7 @@ def get_parser():
1956
1957
  ' $ rucio-admin rse add-protocol --hostname jdoes.test.org --scheme gsiftp --prefix \'/atlasdatadisk/rucio/\' --port 8443 JDOE_DATADISK\n'
1957
1958
  '\n'
1958
1959
  'Note: no printed stdout.\n'
1959
- 'Note: examples of optional parametres::\n'
1960
+ 'Note: examples of optional parameters::\n'
1960
1961
  '\n'
1961
1962
  ' --space-token DATADISK\n'
1962
1963
  ' --web-service-path \'/srm/managerv2?SFN=\'\n'
@@ -2110,7 +2111,7 @@ def get_parser():
2110
2111
 
2111
2112
  # The config subparser
2112
2113
  config_parser = subparsers.add_parser('config',
2113
- help='Configuration methods. The global configuration of data mangement system can by modified.',
2114
+ help='Configuration methods. The global configuration of data management system can by modified.',
2114
2115
  formatter_class=argparse.RawDescriptionHelpFormatter,
2115
2116
  epilog='''e.g. quotas, daemons, rses''')
2116
2117
  config_subparser = config_parser.add_subparsers(dest='config_subcommand', **required_arg)
@@ -2311,9 +2312,9 @@ def get_parser():
2311
2312
  declare_bad_file_replicas_parser.add_argument('--inputfile', dest='inputfile', nargs='?', action='store', help='File containing list of bad items')
2312
2313
  declare_bad_file_replicas_parser.add_argument('--allow-collection', dest='allow_collection', action='store_true', help='Allow passing a collection DID as bad item')
2313
2314
 
2314
- declare_bad_file_replicas_parser.add_argument('--lfns', dest='lfns', nargs='?', action='store', help='File cotaining list of LFNs for bad replicas. Requires --rse and --scope')
2315
- declare_bad_file_replicas_parser.add_argument('--scope', dest='scope', nargs='?', action='store', help='Common scope for bad replicas secified with LFN list, ignored wthout --lfns')
2316
- declare_bad_file_replicas_parser.add_argument('--rse', dest='rse', nargs='?', action='store', help='Common RSE for bad replicas secified with LFN list, ignored wthout --lfns')
2315
+ declare_bad_file_replicas_parser.add_argument('--lfns', dest='lfns', nargs='?', action='store', help='File containing list of LFNs for bad replicas. Requires --rse and --scope')
2316
+ declare_bad_file_replicas_parser.add_argument('--scope', dest='scope', nargs='?', action='store', help='Common scope for bad replicas specified with LFN list, ignored without --lfns')
2317
+ declare_bad_file_replicas_parser.add_argument('--rse', dest='rse', nargs='?', action='store', help='Common RSE for bad replicas specified with LFN list, ignored without --lfns')
2317
2318
 
2318
2319
  # The declare-temporary-unavailable command
2319
2320
  declare_temporary_unavailable_replicas_parser = rep_subparser.add_parser('declare-temporary-unavailable',
@@ -129,7 +129,7 @@ def main(args):
129
129
  time.sleep(RETRY_AFTER)
130
130
 
131
131
  # Avoid infinite loop if an alternative check() implementation doesn't
132
- # decrement the number of attemps and keeps pushing failed checks.
132
+ # decrement the number of attempts and keeps pushing failed checks.
133
133
  tmp_list = []
134
134
  while not retry.empty():
135
135
  tmp_list.append(retry.get())
@@ -149,7 +149,7 @@ def get_parser():
149
149
  """
150
150
  Returns the argparse parser.
151
151
  """
152
- parser = argparse.ArgumentParser(description="The auditor daemon is the one responsable for the detection of inconsistencies on storage, i.e.: dark data discovery.",
152
+ parser = argparse.ArgumentParser(description="The auditor daemon is the one responsible for the detection of inconsistencies on storage, i.e.: dark data discovery.",
153
153
  formatter_class=argparse.RawDescriptionHelpFormatter)
154
154
  parser.add_argument(
155
155
  '--nprocs',
@@ -27,7 +27,7 @@ def get_parser():
27
27
  """
28
28
  Returns the argparse parser.
29
29
  """
30
- parser = argparse.ArgumentParser(description="Automatix is a daemon used to inject random generated files to an RSE. It is used to continuosly check that an RSE is reachable and operating as spected.")
30
+ parser = argparse.ArgumentParser(description="Automatix is a daemon used to inject random generated files to an RSE. It is used to continuously check that an RSE is reachable and operating as expected.")
31
31
  parser.add_argument("--run-once", action="store_true", default=False, help='Runs one loop iteration')
32
32
  parser.add_argument("--input-file", action="store", default="/opt/rucio/etc/automatix.json", type=str, help='Automatix configuration')
33
33
  parser.add_argument("--threads-per-process", action="store", default=1, type=int, help='Total number of workers per process')
@@ -27,7 +27,7 @@ def get_parser():
27
27
  """
28
28
  Returns the argparse parser.
29
29
  """
30
- parser = argparse.ArgumentParser(description="Conveyor is a group of daemons to manage file transfers. The conveyor-finisher is the resposible to update Rucio internal state after the transfer has finished.")
30
+ parser = argparse.ArgumentParser(description="Conveyor is a group of daemons to manage file transfers. The conveyor-finisher is the responsible to update Rucio internal state after the transfer has finished.")
31
31
  parser.add_argument("--run-once", action="store_true", default=False,
32
32
  help='One iteration only')
33
33
  parser.add_argument("--total-threads", action="store", default=1, type=int,
@@ -34,7 +34,7 @@ Upload a file and create a replication rule::
34
34
  $ rucio add-rule mock:file 1 MOCK2
35
35
  $ rucio-admin rse add-distance MOCK2 MOCK --distance 1
36
36
 
37
- The rule should replicate the file from RSE MOCK to RSE MOCK2. Therefor a distance between these RSEs is needed.
37
+ The rule should replicate the file from RSE MOCK to RSE MOCK2. Therefore a distance between these RSEs is needed.
38
38
 
39
39
  Check transfer requests for the DID::
40
40
 
@@ -56,7 +56,7 @@ Check again the transfer requests for the DID::
56
56
  session.get_session().query(models.Request).filter_by(scope='mock', name='file').first()
57
57
  # {'request_type': TRANSFER, 'state': SUBMITTED', ...}
58
58
 
59
- A tranfer request got created by executing the transfer. Depending on the transfer submission, the request state can be different. In this example the transfer got submitted successfully.
59
+ A transfer request got created by executing the transfer. Depending on the transfer submission, the request state can be different. In this example the transfer got submitted successfully.
60
60
 
61
61
  When run in multi-VO mode, by default the daemon will run on RSEs from all VOs::
62
62
 
@@ -113,11 +113,11 @@ Check the replicas for the DID mock:file::
113
113
  from rucio.db.sqla import session, models
114
114
  session.get_session().query(models.RSEFileAssociation).filter_by(name='file', scope='mock').first()
115
115
  // [{'name': 'file','lock_cnt': 1, 'state': COPYING, 'scope': 'mock', 'rse_id': 'f81f366593754c01b0c340fa5ea0ab90'},
116
- // {'scope': 'mock', 'rse_id': '1330d5daee37474c88ba888101d7b859', 'name': 'file', 'state': AVAIABLE, 'lock_cnt': 1}]
116
+ // {'scope': 'mock', 'rse_id': '1330d5daee37474c88ba888101d7b859', 'name': 'file', 'state': AVAILABLE, 'lock_cnt': 1}]
117
117
 
118
118
  The DID mock:file has now two replicas with one lock each.
119
119
  As the file replica is attached to the dataset and the rule for the dataset specifies another RSE MOCK instead of the upload RSE, it has to be replicated to this RSE.
120
- Therefor a second replica in state COPYING got created on RSE MOCK.
120
+ Therefore a second replica in state COPYING got created on RSE MOCK.
121
121
  ''', formatter_class=argparse.RawDescriptionHelpFormatter)
122
122
  parser.add_argument("--run-once", action="store_true", default=False, help='One iteration only')
123
123
  parser.add_argument("--threads", action="store", default=1, type=int, help='Concurrency control: total number of threads for this process')
@@ -30,7 +30,7 @@ def get_parser():
30
30
  parser = argparse.ArgumentParser(description="The Necromancer daemon is responsible for managing bad replicas. If a replica that got declared bad has other replicas, it will try to recover it by requesting a new transfer. If there are no replicas anymore, then the file gets marked as lost.", epilog='''
31
31
  Lost replica:
32
32
  In this example the file gets uploaded and will only have this replica as there are no replication rules. If it gets declared bad, there will be no replica to recover from.
33
- Therefor the replica gets marked as lost.
33
+ Therefore the replica gets marked as lost.
34
34
 
35
35
  Upload a file::
36
36
 
@@ -14,7 +14,7 @@
14
14
  # limitations under the License.
15
15
 
16
16
  """
17
- OAuth Manager is a daemon which is reponsible for:
17
+ OAuth Manager is a daemon which is responsible for:
18
18
  - deletion of expired access tokens (in case there is a valid refresh token, expired access tokens will be kept until refresh_token expires as well.)
19
19
  - deletion of expired OAuth session parameters
20
20
  - refreshing access tokens via their refresh tokens.
@@ -32,7 +32,7 @@ def get_parser():
32
32
  """
33
33
  parser = argparse.ArgumentParser(description='''
34
34
 
35
- OAuth Manager is a daemon which is reponsible for:
35
+ OAuth Manager is a daemon which is responsible for:
36
36
  - deletion of expired access tokens (in case there is a valid refresh token,
37
37
  expired access tokens will be kept until refresh_token expires as well.)
38
38
  - deletion of expired OAuth session parameters
@@ -67,7 +67,7 @@ $ id0=`uuidgen`
67
67
  $ id1=`uuidgen`
68
68
  $ id2=`uuidgen`
69
69
  $ id3=`uuidgen`
70
- $ echo "file available on MOCK_RECOVERY and decalred suspicious on MOCK_SUSPICIOUS (11 times)" > /tmp/file_available_suspicious'_'$id1
70
+ $ echo "file available on MOCK_RECOVERY and declared suspicious on MOCK_SUSPICIOUS (11 times)" > /tmp/file_available_suspicious'_'$id1
71
71
  $ echo "file available on MOCK_RECOVERY and declared suspicious on MOCK_SUSPICIOUS (11 times) and 1 time bad/deleted/lost on MOCK_SUSPICIOUS" > /tmp/file_available_suspicious_and_bad'_'$id2
72
72
  $ echo "file declared as unavailable on MOCK_RECOVERY and declared as suspicious 11 times on MOCK_SUSPICIOUS" > /tmp/file_notavailable_suspicious'_'$id3
73
73
 
@@ -228,7 +228,7 @@ Note that attempting the use the ``--vos`` argument when in single-VO mode will
228
228
  2020-07-28 15:21:33,349 5488 WARNING Ignoring argument vos, this is only applicable in a multi-VO setup.
229
229
  ''', formatter_class=argparse.RawDescriptionHelpFormatter) # NOQA: E501
230
230
  parser.add_argument("--nattempts", action="store", default=5, help='Minimum count of suspicious file replica appearance in bad_replicas table. Default value is 5.')
231
- parser.add_argument("--younger-than", action="store", default=5, help='Consider all file replicas logged in bad_replicas table since speicified number of younger-than days. Default value is 5.')
231
+ parser.add_argument("--younger-than", action="store", default=5, help='Consider all file replicas logged in bad_replicas table since specified number of younger-than days. Default value is 5.')
232
232
  parser.add_argument('--vos', nargs='+', type=str, help='Optional list of VOs to consider. Only used in multi-VO mode.')
233
233
  parser.add_argument("--run-once", action="store_true", default=False, help='One iteration only.')
234
234
  parser.add_argument("--limit-suspicious-files-on-rse", action="store", default=5, help='Maximum number of suspicious replicas on an RSE before that RSE is considered problematic and the suspicious replicas on that RSE are declared "TEMPORARY_UNAVAILABLE". Default value is 5.')
@@ -12,7 +12,7 @@ ldap_host = ldap-host.domain.name
12
12
  baseDN = dc=foo,dc=bar,dc=domain,dc=
13
13
  searchFilter = (objectClass=OpenLDAPperson)
14
14
 
15
- # set as DEFAULT to use annonymous bind
15
+ # set as DEFAULT to use anonymous bind
16
16
  username = DEFAULT
17
17
  # Leave blank for prompt
18
18
  password =
@@ -12,7 +12,8 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import TYPE_CHECKING
15
+ from collections.abc import Iterator
16
+ from typing import TYPE_CHECKING, Any, Optional
16
17
 
17
18
  import rucio.api.permission
18
19
  import rucio.common.exception
@@ -115,7 +116,7 @@ def update_account(account, key, value, issuer='root', vo='def', *, session: "Se
115
116
 
116
117
 
117
118
  @stream_session
118
- def list_accounts(filter_={}, vo='def', *, session: "Session"):
119
+ def list_accounts(filter_: Optional[dict[str, Any]] = None, vo: str = 'def', *, session: "Session") -> Iterator[dict[str, Any]]:
119
120
  """
120
121
  Lists all the Rucio account names.
121
122
 
@@ -128,8 +129,7 @@ def list_accounts(filter_={}, vo='def', *, session: "Session"):
128
129
  :returns: List of all accounts.
129
130
  """
130
131
  # If filter is empty, create a new dict to avoid overwriting the function's default
131
- if not filter_:
132
- filter_ = {}
132
+ filter_ = filter_ or {}
133
133
 
134
134
  if 'account' in filter_:
135
135
  filter_['account'] = InternalAccount(filter_['account'], vo=vo)
@@ -35,7 +35,7 @@ def get_rse_account_usage(rse, vo='def', *, session: "Session"):
35
35
  :param rse: The RSE name.
36
36
  :param vo: The VO to act on.
37
37
  :param session: The database session in use.
38
- :return: List of dictionnaries.
38
+ :return: List of dictionaries.
39
39
  """
40
40
  rse_id = get_rse_id(rse=rse, vo=vo, session=session)
41
41
 
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import TYPE_CHECKING
15
+ from typing import TYPE_CHECKING, Any, Optional
16
16
 
17
17
  from rucio.api import permission
18
18
  from rucio.common import exception
@@ -32,7 +32,7 @@ ConfigParser compatible interface.
32
32
 
33
33
 
34
34
  @read_session
35
- def sections(issuer=None, vo='def', *, session: "Session"):
35
+ def sections(issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> list[str]:
36
36
  """
37
37
  Return a list of the sections available.
38
38
 
@@ -49,7 +49,7 @@ def sections(issuer=None, vo='def', *, session: "Session"):
49
49
 
50
50
 
51
51
  @transactional_session
52
- def add_section(section, issuer=None, vo='def', *, session: "Session"):
52
+ def add_section(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> None:
53
53
  """
54
54
  Add a section to the configuration.
55
55
 
@@ -66,7 +66,7 @@ def add_section(section, issuer=None, vo='def', *, session: "Session"):
66
66
 
67
67
 
68
68
  @read_session
69
- def has_section(section, issuer=None, vo='def', *, session: "Session"):
69
+ def has_section(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> bool:
70
70
  """
71
71
  Indicates whether the named section is present in the configuration.
72
72
 
@@ -84,7 +84,7 @@ def has_section(section, issuer=None, vo='def', *, session: "Session"):
84
84
 
85
85
 
86
86
  @read_session
87
- def options(section, issuer=None, vo='def', *, session: "Session"):
87
+ def options(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> list[str]:
88
88
  """
89
89
  Returns a list of options available in the specified section.
90
90
 
@@ -102,7 +102,7 @@ def options(section, issuer=None, vo='def', *, session: "Session"):
102
102
 
103
103
 
104
104
  @read_session
105
- def has_option(section, option, issuer=None, vo='def', *, session: "Session"):
105
+ def has_option(section: str, option: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> bool:
106
106
  """
107
107
  Check if the given section exists and contains the given option.
108
108
 
@@ -121,7 +121,7 @@ def has_option(section, option, issuer=None, vo='def', *, session: "Session"):
121
121
 
122
122
 
123
123
  @read_session
124
- def get(section, option, issuer=None, vo='def', *, session: "Session"):
124
+ def get(section: str, option: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> Any:
125
125
  """
126
126
  Get an option value for the named section. Value can be auto-coerced to int, float, and bool; string otherwise.
127
127
 
@@ -143,7 +143,7 @@ def get(section, option, issuer=None, vo='def', *, session: "Session"):
143
143
 
144
144
 
145
145
  @read_session
146
- def items(section, issuer=None, vo='def', *, session: "Session"):
146
+ def items(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> list[tuple[str, Any]]:
147
147
  """
148
148
  Return a list of (option, value) pairs for each option in the given section. Values are auto-coerced as in get().
149
149
 
@@ -162,7 +162,7 @@ def items(section, issuer=None, vo='def', *, session: "Session"):
162
162
 
163
163
 
164
164
  @transactional_session
165
- def set(section, option, value, issuer=None, vo='def', *, session: "Session"):
165
+ def set(section: str, option: str, value: Any, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> None:
166
166
  """
167
167
  Set the given option to the specified value.
168
168
 
@@ -181,7 +181,7 @@ def set(section, option, value, issuer=None, vo='def', *, session: "Session"):
181
181
 
182
182
 
183
183
  @transactional_session
184
- def remove_section(section, issuer=None, vo='def', *, session: "Session"):
184
+ def remove_section(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> bool:
185
185
  """
186
186
  Remove the specified option from the specified section.
187
187
 
@@ -199,7 +199,7 @@ def remove_section(section, issuer=None, vo='def', *, session: "Session"):
199
199
 
200
200
 
201
201
  @transactional_session
202
- def remove_option(section, option, issuer=None, vo='def', *, session: "Session"):
202
+ def remove_option(section: str, option: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> bool:
203
203
  """
204
204
  Remove the specified section from the configuration.
205
205
 
@@ -12,8 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ from collections.abc import Iterator, Sequence
15
16
  from copy import deepcopy
16
- from typing import TYPE_CHECKING
17
+ from typing import TYPE_CHECKING, Any
17
18
 
18
19
  import rucio.api.permission
19
20
  from rucio.common.constants import RESERVED_KEYS
@@ -28,7 +29,7 @@ from rucio.db.sqla.constants import DIDType
28
29
  from rucio.db.sqla.session import read_session, stream_session, transactional_session
29
30
 
30
31
  if TYPE_CHECKING:
31
- from typing import Any, Iterator, Optional
32
+ from typing import Optional
32
33
 
33
34
  from sqlalchemy.orm import Session
34
35
 
@@ -66,7 +67,22 @@ def list_dids(scope, filters, did_type='collection', ignore_case=False, limit=No
66
67
 
67
68
 
68
69
  @transactional_session
69
- def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, rules=[], lifetime=None, dids=[], rse=None, vo='def', *, session: "Session"):
70
+ def add_did(
71
+ scope: str,
72
+ name: str,
73
+ did_type: str,
74
+ issuer: str,
75
+ account: "Optional[str]" = None,
76
+ statuses: "Optional[dict[str, str]]" = None,
77
+ meta: "Optional[dict[str, str]]" = None,
78
+ rules: "Optional[Sequence[dict[str, Any]]]" = None,
79
+ lifetime: "Optional[str]" = None,
80
+ dids: "Optional[Sequence[dict[str, Any]]]" = None,
81
+ rse: "Optional[str]" = None,
82
+ vo: str = 'def',
83
+ *,
84
+ session: "Session"
85
+ ) -> None:
70
86
  """
71
87
  Add data did.
72
88
 
@@ -84,6 +100,10 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
84
100
  :param vo: The VO to act on.
85
101
  :param session: The database session in use.
86
102
  """
103
+ statuses = statuses or {}
104
+ meta = meta or {}
105
+ rules = rules or []
106
+ dids = dids or []
87
107
  v_did = {'name': name, 'type': did_type.upper(), 'scope': scope}
88
108
  validate_schema(name='did', obj=v_did, vo=vo)
89
109
  validate_schema(name='dids', obj=dids, vo=vo)
@@ -92,10 +112,9 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
92
112
  if not rucio.api.permission.has_permission(issuer=issuer, vo=vo, action='add_did', kwargs=kwargs, session=session):
93
113
  raise rucio.common.exception.AccessDenied('Account %s can not add data identifier to scope %s' % (issuer, scope))
94
114
 
95
- if account is not None:
96
- account = InternalAccount(account, vo=vo)
97
- issuer = InternalAccount(issuer, vo=vo)
98
- scope = InternalScope(scope, vo=vo)
115
+ owner_account = None if account is None else InternalAccount(account, vo=vo)
116
+ issuer_account = InternalAccount(issuer, vo=vo)
117
+ internal_scope = InternalScope(scope, vo=vo)
99
118
  for d in dids:
100
119
  d['scope'] = InternalScope(d['scope'], vo=vo)
101
120
  for r in rules:
@@ -107,7 +126,7 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
107
126
 
108
127
  if did_type == 'DATASET':
109
128
  # naming_convention validation
110
- extra_meta = naming_convention.validate_name(scope=scope, name=name, did_type='D', session=session)
129
+ extra_meta = naming_convention.validate_name(scope=internal_scope, name=name, did_type='D', session=session)
111
130
 
112
131
  # merge extra_meta with meta
113
132
  for k in extra_meta or {}:
@@ -120,7 +139,7 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
120
139
  # Validate metadata
121
140
  meta_convention_core.validate_meta(meta=meta, did_type=DIDType[did_type.upper()], session=session)
122
141
 
123
- return did.add_did(scope=scope, name=name, did_type=DIDType[did_type.upper()], account=account or issuer,
142
+ return did.add_did(scope=internal_scope, name=name, did_type=DIDType[did_type.upper()], account=owner_account or issuer_account,
124
143
  statuses=statuses, meta=meta, rules=rules, lifetime=lifetime,
125
144
  dids=dids, rse_id=rse_id, session=session)
126
145
 
@@ -329,7 +348,7 @@ def list_content_history(scope, name, vo='def', *, session: "Session"):
329
348
 
330
349
 
331
350
  @stream_session
332
- def bulk_list_files(dids: "list[dict[str, Any]]", long: bool = False, vo: str = 'def', *, session: "Session") -> "Iterator[dict[str, Any]]":
351
+ def bulk_list_files(dids: list[dict[str, Any]], long: bool = False, vo: str = 'def', *, session: "Session") -> Iterator[dict[str, Any]]:
333
352
  """
334
353
  List file contents of a list of data identifiers.
335
354
 
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import TYPE_CHECKING
15
+ from typing import TYPE_CHECKING, Any
16
16
 
17
17
  from rucio.api import permission
18
18
  from rucio.common import exception
@@ -25,7 +25,7 @@ if TYPE_CHECKING:
25
25
 
26
26
 
27
27
  @read_session
28
- def export_data(issuer, distance=True, vo='def', *, session: "Session"):
28
+ def export_data(issuer: str, distance: bool = True, vo: str = 'def', *, session: "Session") -> dict[str, Any]:
29
29
  """
30
30
  Export data from Rucio.
31
31
 
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import TYPE_CHECKING
15
+ from typing import TYPE_CHECKING, Optional
16
16
 
17
17
  from rucio.api import permission
18
18
  from rucio.common import exception
@@ -20,11 +20,13 @@ from rucio.core import heartbeat
20
20
  from rucio.db.sqla.session import read_session, transactional_session
21
21
 
22
22
  if TYPE_CHECKING:
23
+ from threading import Thread
24
+
23
25
  from sqlalchemy.orm import Session
24
26
 
25
27
 
26
28
  @read_session
27
- def list_heartbeats(issuer=None, vo='def', *, session: "Session"):
29
+ def list_heartbeats(issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> list["heartbeat.HeartbeatDict"]:
28
30
  """
29
31
  Return a list of tuples of all heartbeats.
30
32
 
@@ -41,7 +43,18 @@ def list_heartbeats(issuer=None, vo='def', *, session: "Session"):
41
43
 
42
44
 
43
45
  @transactional_session
44
- def create_heartbeat(executable, hostname, pid, older_than, payload, thread=None, issuer=None, vo='def', *, session: "Session"):
46
+ def create_heartbeat(
47
+ executable: str,
48
+ hostname: str,
49
+ pid: int,
50
+ older_than: int,
51
+ payload: Optional[str],
52
+ thread: Optional["Thread"] = None,
53
+ issuer: Optional[str] = None,
54
+ vo: str = 'def',
55
+ *,
56
+ session: "Session"
57
+ ) -> None:
45
58
  """
46
59
  Creates a heartbeat.
47
60
  :param issuer: The issuer account.
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import TYPE_CHECKING
15
+ from typing import TYPE_CHECKING, Any
16
16
 
17
17
  from rucio.api import permission
18
18
  from rucio.common import exception
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
26
26
 
27
27
 
28
28
  @transactional_session
29
- def import_data(data, issuer, vo='def', *, session: "Session"):
29
+ def import_data(data: dict[str, Any], issuer: str, vo: str = 'def', *, session: "Session") -> None:
30
30
  """
31
31
  Import data to add/update/delete records in Rucio.
32
32
 
@@ -27,7 +27,7 @@ if TYPE_CHECKING:
27
27
 
28
28
 
29
29
  @read_session
30
- def list_keys(*, session: "Session"):
30
+ def list_keys(*, session: "Session") -> list[str]:
31
31
  """
32
32
  Lists all keys for DID Metadata Conventions.
33
33
 
@@ -39,7 +39,7 @@ def list_keys(*, session: "Session"):
39
39
 
40
40
 
41
41
  @read_session
42
- def list_values(key: str, *, session: "Session"):
42
+ def list_values(key: str, *, session: "Session") -> list[str]:
43
43
  """
44
44
  Lists all allowed values for a DID key (all values for a key in DID Metadata Conventions).
45
45
 
@@ -53,7 +53,7 @@ def list_values(key: str, *, session: "Session"):
53
53
 
54
54
 
55
55
  @transactional_session
56
- def add_key(key: str, key_type: Union[KeyType, str], issuer: "InternalAccount", value_type: Optional[str] = None, value_regexp: Optional[str] = None, vo: str = 'def', *, session: "Session"):
56
+ def add_key(key: str, key_type: Union[KeyType, str], issuer: "InternalAccount", value_type: Optional[str] = None, value_regexp: Optional[str] = None, vo: str = 'def', *, session: "Session") -> None:
57
57
  """
58
58
  Add an allowed key for DID metadata (update the DID Metadata Conventions table with a new key).
59
59
 
@@ -72,7 +72,7 @@ def add_key(key: str, key_type: Union[KeyType, str], issuer: "InternalAccount",
72
72
 
73
73
 
74
74
  @transactional_session
75
- def add_value(key: str, value: str, issuer: "InternalAccount", vo: str = 'def', *, session: "Session"):
75
+ def add_value(key: str, value: str, issuer: "InternalAccount", vo: str = 'def', *, session: "Session") -> None:
76
76
  """
77
77
  Add an allowed value for DID metadata (update a key in DID Metadata Conventions table).
78
78
 
@@ -13,7 +13,7 @@
13
13
  # limitations under the License.
14
14
 
15
15
  from copy import deepcopy
16
- from typing import TYPE_CHECKING
16
+ from typing import TYPE_CHECKING, Any
17
17
 
18
18
  from rucio.common.exception import RSENotFound
19
19
  from rucio.common.types import InternalAccount, InternalScope
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
26
26
 
27
27
 
28
28
  @read_session
29
- def has_permission(issuer, action, kwargs, vo='def', *, session: "Session"):
29
+ def has_permission(issuer: str, action: str, kwargs: dict[str, Any], vo: str = 'def', *, session: "Session") -> bool:
30
30
  """
31
31
  Checks if an account has the specified permission to
32
32
  execute an action with parameters.
@@ -66,6 +66,6 @@ def has_permission(issuer, action, kwargs, vo='def', *, session: "Session"):
66
66
  for r in d['rules']:
67
67
  r['account'] = InternalAccount(r['account'], vo=vo)
68
68
 
69
- issuer = InternalAccount(issuer, vo=vo)
69
+ issuer_account = InternalAccount(issuer, vo=vo)
70
70
 
71
- return permission.has_permission(issuer=issuer, action=action, kwargs=kwargs, session=session)
71
+ return permission.has_permission(issuer=issuer_account, action=action, kwargs=kwargs, session=session)