rucio 34.3.0__tar.gz → 34.4.1__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 (594) hide show
  1. {rucio-34.3.0 → rucio-34.4.1}/PKG-INFO +2 -2
  2. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/account.py +4 -4
  3. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/did.py +29 -11
  4. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/exporter.py +2 -2
  5. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/heartbeat.py +16 -3
  6. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/importer.py +2 -2
  7. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/meta_conventions.py +4 -4
  8. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/permission.py +4 -4
  9. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/replica.py +4 -2
  10. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/rse.py +3 -4
  11. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/rule.py +4 -4
  12. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/scope.py +3 -4
  13. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/baseclient.py +2 -2
  14. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/downloadclient.py +56 -7
  15. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/replicaclient.py +13 -1
  16. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/uploadclient.py +8 -2
  17. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/pcache.py +3 -3
  18. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/types.py +14 -0
  19. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/utils.py +3 -3
  20. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/authentication.py +76 -23
  21. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/did.py +310 -73
  22. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/did_meta_plugins/filter_engine.py +25 -5
  23. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/distance.py +2 -1
  24. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/oidc.py +5 -5
  25. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/replica.py +43 -31
  26. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/replica_sorter.py +1 -1
  27. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/rse.py +2 -1
  28. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/rse_selector.py +29 -3
  29. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/rule.py +14 -7
  30. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/rule_grouping.py +59 -11
  31. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/scope.py +3 -2
  32. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/vo.py +1 -1
  33. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/auditor/srmdumps.py +3 -1
  34. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/bb8/common.py +11 -9
  35. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/conveyor/stager.py +14 -13
  36. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/reaper/dark_reaper.py +13 -2
  37. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +73 -12
  38. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/util.py +40 -24
  39. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/posix.py +1 -1
  40. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/protocol.py +56 -23
  41. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/srm.py +2 -2
  42. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/storm.py +1 -1
  43. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/webdav.py +10 -6
  44. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/rsemanager.py +13 -0
  45. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/vcsversion.py +3 -3
  46. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio.egg-info/SOURCES.txt +0 -4
  47. {rucio-34.3.0 → rucio-34.4.1}/pyproject.toml +31 -0
  48. {rucio-34.3.0 → rucio-34.4.1}/requirements.txt +1 -1
  49. {rucio-34.3.0 → rucio-34.4.1}/tests/test_replica.py +1 -1
  50. {rucio-34.3.0 → rucio-34.4.1}/tests/test_replica_recoverer.py +73 -0
  51. {rucio-34.3.0 → rucio-34.4.1}/tests/test_upload.py +32 -1
  52. rucio-34.3.0/lib/rucio/common/schema/cms.py +0 -477
  53. rucio-34.3.0/lib/rucio/common/schema/lsst.py +0 -422
  54. rucio-34.3.0/lib/rucio/core/permission/cms.py +0 -1168
  55. rucio-34.3.0/tests/test_schema_cms.py +0 -229
  56. {rucio-34.3.0 → rucio-34.4.1}/AUTHORS.rst +0 -0
  57. {rucio-34.3.0 → rucio-34.4.1}/ChangeLog +0 -0
  58. {rucio-34.3.0 → rucio-34.4.1}/LICENSE +0 -0
  59. {rucio-34.3.0 → rucio-34.4.1}/MANIFEST.in +0 -0
  60. {rucio-34.3.0 → rucio-34.4.1}/README.rst +0 -0
  61. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio +0 -0
  62. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-abacus-account +0 -0
  63. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-abacus-collection-replica +0 -0
  64. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-abacus-rse +0 -0
  65. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-admin +0 -0
  66. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-atropos +0 -0
  67. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-auditor +0 -0
  68. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-automatix +0 -0
  69. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-bb8 +0 -0
  70. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-c3po +0 -0
  71. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-cache-client +0 -0
  72. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-cache-consumer +0 -0
  73. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-conveyor-finisher +0 -0
  74. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-conveyor-poller +0 -0
  75. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-conveyor-preparer +0 -0
  76. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-conveyor-receiver +0 -0
  77. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-conveyor-stager +0 -0
  78. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-conveyor-submitter +0 -0
  79. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-conveyor-throttler +0 -0
  80. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-dark-reaper +0 -0
  81. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-dumper +0 -0
  82. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-follower +0 -0
  83. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-hermes +0 -0
  84. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-judge-cleaner +0 -0
  85. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-judge-evaluator +0 -0
  86. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-judge-injector +0 -0
  87. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-judge-repairer +0 -0
  88. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-kronos +0 -0
  89. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-minos +0 -0
  90. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-minos-temporary-expiration +0 -0
  91. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-necromancer +0 -0
  92. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-oauth-manager +0 -0
  93. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-reaper +0 -0
  94. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-replica-recoverer +0 -0
  95. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-rse-decommissioner +0 -0
  96. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-storage-consistency-actions +0 -0
  97. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-transmogrifier +0 -0
  98. {rucio-34.3.0 → rucio-34.4.1}/bin/rucio-undertaker +0 -0
  99. {rucio-34.3.0 → rucio-34.4.1}/etc/alembic.ini.template +0 -0
  100. {rucio-34.3.0 → rucio-34.4.1}/etc/alembic_offline.ini.template +0 -0
  101. {rucio-34.3.0 → rucio-34.4.1}/etc/globus-config.yml.template +0 -0
  102. {rucio-34.3.0 → rucio-34.4.1}/etc/ldap.cfg.template +0 -0
  103. {rucio-34.3.0 → rucio-34.4.1}/etc/mail_templates/rule_approval_request.tmpl +0 -0
  104. {rucio-34.3.0 → rucio-34.4.1}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
  105. {rucio-34.3.0 → rucio-34.4.1}/etc/mail_templates/rule_approved_user.tmpl +0 -0
  106. {rucio-34.3.0 → rucio-34.4.1}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
  107. {rucio-34.3.0 → rucio-34.4.1}/etc/mail_templates/rule_denied_user.tmpl +0 -0
  108. {rucio-34.3.0 → rucio-34.4.1}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
  109. {rucio-34.3.0 → rucio-34.4.1}/etc/rse-accounts.cfg.template +0 -0
  110. {rucio-34.3.0 → rucio-34.4.1}/etc/rucio.cfg.atlas.client.template +0 -0
  111. {rucio-34.3.0 → rucio-34.4.1}/etc/rucio.cfg.template +0 -0
  112. {rucio-34.3.0 → rucio-34.4.1}/etc/rucio_multi_vo.cfg.template +0 -0
  113. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/__init__.py +0 -0
  114. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/alembicrevision.py +0 -0
  115. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/__init__.py +0 -0
  116. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/account_limit.py +0 -0
  117. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/authentication.py +0 -0
  118. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/config.py +0 -0
  119. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/credential.py +0 -0
  120. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/dirac.py +0 -0
  121. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/identity.py +0 -0
  122. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/lifetime_exception.py +0 -0
  123. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/lock.py +0 -0
  124. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/quarantined_replica.py +0 -0
  125. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/request.py +0 -0
  126. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/subscription.py +0 -0
  127. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/api/vo.py +0 -0
  128. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/__init__.py +0 -0
  129. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/accountclient.py +0 -0
  130. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/accountlimitclient.py +0 -0
  131. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/client.py +0 -0
  132. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/configclient.py +0 -0
  133. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/credentialclient.py +0 -0
  134. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/didclient.py +0 -0
  135. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/diracclient.py +0 -0
  136. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/exportclient.py +0 -0
  137. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/fileclient.py +0 -0
  138. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/importclient.py +0 -0
  139. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/lifetimeclient.py +0 -0
  140. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/lockclient.py +0 -0
  141. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/metaconventionsclient.py +0 -0
  142. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/pingclient.py +0 -0
  143. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/requestclient.py +0 -0
  144. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/rseclient.py +0 -0
  145. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/ruleclient.py +0 -0
  146. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/scopeclient.py +0 -0
  147. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/subscriptionclient.py +0 -0
  148. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/client/touchclient.py +0 -0
  149. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/__init__.py +0 -0
  150. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/cache.py +0 -0
  151. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/config.py +0 -0
  152. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/constants.py +0 -0
  153. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/constraints.py +0 -0
  154. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/didtype.py +0 -0
  155. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/dumper/__init__.py +0 -0
  156. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/dumper/consistency.py +0 -0
  157. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/dumper/data_models.py +0 -0
  158. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/dumper/path_parsing.py +0 -0
  159. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/exception.py +0 -0
  160. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/extra.py +0 -0
  161. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/logging.py +0 -0
  162. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/plugins.py +0 -0
  163. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/policy.py +0 -0
  164. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/schema/__init__.py +0 -0
  165. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/schema/atlas.py +0 -0
  166. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/schema/belleii.py +0 -0
  167. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/schema/domatpc.py +0 -0
  168. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/schema/escape.py +0 -0
  169. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/schema/generic.py +0 -0
  170. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
  171. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/schema/icecube.py +0 -0
  172. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/stomp_utils.py +0 -0
  173. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/stopwatch.py +0 -0
  174. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/common/test_rucio_server.py +0 -0
  175. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/__init__.py +0 -0
  176. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/account.py +0 -0
  177. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/account_counter.py +0 -0
  178. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/account_limit.py +0 -0
  179. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/config.py +0 -0
  180. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/credential.py +0 -0
  181. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/did_meta_plugins/__init__.py +0 -0
  182. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/did_meta_plugins/did_column_meta.py +0 -0
  183. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +0 -0
  184. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/did_meta_plugins/json_meta.py +0 -0
  185. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/did_meta_plugins/mongo_meta.py +0 -0
  186. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/did_meta_plugins/postgres_meta.py +0 -0
  187. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/dirac.py +0 -0
  188. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/exporter.py +0 -0
  189. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/heartbeat.py +0 -0
  190. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/identity.py +0 -0
  191. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/importer.py +0 -0
  192. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/lifetime_exception.py +0 -0
  193. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/lock.py +0 -0
  194. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/message.py +0 -0
  195. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/meta_conventions.py +0 -0
  196. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/monitor.py +0 -0
  197. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/naming_convention.py +0 -0
  198. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/nongrid_trace.py +0 -0
  199. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/permission/__init__.py +0 -0
  200. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/permission/atlas.py +0 -0
  201. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/permission/belleii.py +0 -0
  202. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/permission/escape.py +0 -0
  203. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/permission/generic.py +0 -0
  204. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/permission/generic_multi_vo.py +0 -0
  205. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/quarantined_replica.py +0 -0
  206. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/request.py +0 -0
  207. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/rse_counter.py +0 -0
  208. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/rse_expression_parser.py +0 -0
  209. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/subscription.py +0 -0
  210. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/topology.py +0 -0
  211. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/trace.py +0 -0
  212. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/transfer.py +0 -0
  213. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/core/volatile_replica.py +0 -0
  214. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/__init__.py +0 -0
  215. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/abacus/__init__.py +0 -0
  216. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/abacus/account.py +0 -0
  217. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
  218. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/abacus/rse.py +0 -0
  219. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/atropos/__init__.py +0 -0
  220. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/atropos/atropos.py +0 -0
  221. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/auditor/__init__.py +0 -0
  222. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/auditor/hdfs.py +0 -0
  223. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/automatix/__init__.py +0 -0
  224. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/automatix/automatix.py +0 -0
  225. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/badreplicas/__init__.py +0 -0
  226. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/badreplicas/minos.py +0 -0
  227. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +0 -0
  228. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/badreplicas/necromancer.py +0 -0
  229. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/bb8/__init__.py +0 -0
  230. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/bb8/bb8.py +0 -0
  231. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +0 -0
  232. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/bb8/t2_background_rebalance.py +0 -0
  233. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/__init__.py +0 -0
  234. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/algorithms/__init__.py +0 -0
  235. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/algorithms/simple.py +0 -0
  236. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/algorithms/t2_free_space.py +0 -0
  237. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -0
  238. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +0 -0
  239. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/c3po.py +0 -0
  240. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/collectors/__init__.py +0 -0
  241. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/collectors/agis.py +0 -0
  242. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/collectors/free_space.py +0 -0
  243. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/collectors/jedi_did.py +0 -0
  244. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/collectors/mock_did.py +0 -0
  245. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/collectors/network_metrics.py +0 -0
  246. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/collectors/workload.py +0 -0
  247. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/utils/__init__.py +0 -0
  248. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/utils/dataset_cache.py +0 -0
  249. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -0
  250. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/utils/expiring_list.py +0 -0
  251. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/utils/popularity.py +0 -0
  252. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/c3po/utils/timeseries.py +0 -0
  253. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/cache/__init__.py +0 -0
  254. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/cache/consumer.py +0 -0
  255. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/common.py +0 -0
  256. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/conveyor/__init__.py +0 -0
  257. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/conveyor/common.py +0 -0
  258. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/conveyor/finisher.py +0 -0
  259. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/conveyor/poller.py +0 -0
  260. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/conveyor/preparer.py +0 -0
  261. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/conveyor/receiver.py +0 -0
  262. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/conveyor/submitter.py +0 -0
  263. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/conveyor/throttler.py +0 -0
  264. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/follower/__init__.py +0 -0
  265. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/follower/follower.py +0 -0
  266. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/hermes/__init__.py +0 -0
  267. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/hermes/hermes.py +0 -0
  268. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/judge/__init__.py +0 -0
  269. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/judge/cleaner.py +0 -0
  270. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/judge/evaluator.py +0 -0
  271. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/judge/injector.py +0 -0
  272. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/judge/repairer.py +0 -0
  273. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/oauthmanager/__init__.py +0 -0
  274. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/oauthmanager/oauthmanager.py +0 -0
  275. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/reaper/__init__.py +0 -0
  276. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/reaper/reaper.py +0 -0
  277. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/replicarecoverer/__init__.py +0 -0
  278. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/rsedecommissioner/__init__.py +0 -0
  279. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/rsedecommissioner/config.py +0 -0
  280. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
  281. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
  282. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +0 -0
  283. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
  284. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +0 -0
  285. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/storage/__init__.py +0 -0
  286. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/storage/consistency/__init__.py +0 -0
  287. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/storage/consistency/actions.py +0 -0
  288. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/tracer/__init__.py +0 -0
  289. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/tracer/kronos.py +0 -0
  290. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/transmogrifier/__init__.py +0 -0
  291. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/transmogrifier/transmogrifier.py +0 -0
  292. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/undertaker/__init__.py +0 -0
  293. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/daemons/undertaker/undertaker.py +0 -0
  294. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/__init__.py +0 -0
  295. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/__init__.py +0 -0
  296. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/constants.py +0 -0
  297. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/__init__.py +0 -0
  298. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
  299. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
  300. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
  301. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
  302. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
  303. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
  304. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
  305. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
  306. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
  307. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
  308. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
  309. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
  310. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
  311. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
  312. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
  313. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
  314. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
  315. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
  316. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
  317. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
  318. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
  319. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
  320. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
  321. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
  322. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
  323. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
  324. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
  325. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
  326. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
  327. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
  328. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
  329. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
  330. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
  331. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
  332. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
  333. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
  334. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
  335. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
  336. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
  337. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
  338. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +0 -0
  339. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
  340. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
  341. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
  342. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
  343. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
  344. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
  345. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
  346. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
  347. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
  348. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
  349. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
  350. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
  351. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
  352. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
  353. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
  354. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
  355. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
  356. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
  357. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
  358. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
  359. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
  360. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
  361. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
  362. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
  363. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
  364. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +0 -0
  365. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
  366. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
  367. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
  368. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
  369. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
  370. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
  371. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
  372. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
  373. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
  374. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
  375. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
  376. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
  377. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
  378. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
  379. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
  380. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
  381. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
  382. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
  383. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
  384. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
  385. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
  386. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
  387. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
  388. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
  389. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
  390. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
  391. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
  392. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
  393. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
  394. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
  395. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
  396. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
  397. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
  398. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
  399. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
  400. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
  401. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
  402. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
  403. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
  404. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
  405. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
  406. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
  407. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
  408. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -0
  409. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
  410. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
  411. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
  412. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
  413. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
  414. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
  415. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
  416. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
  417. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
  418. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
  419. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
  420. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
  421. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
  422. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
  423. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
  424. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
  425. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/models.py +0 -0
  426. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/sautils.py +0 -0
  427. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/session.py +0 -0
  428. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/db/sqla/types.py +0 -0
  429. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/__init__.py +0 -0
  430. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/__init__.py +0 -0
  431. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/bittorrent.py +0 -0
  432. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/cache.py +0 -0
  433. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/dummy.py +0 -0
  434. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/gfal.py +0 -0
  435. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/globus.py +0 -0
  436. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/gsiftp.py +0 -0
  437. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/http_cache.py +0 -0
  438. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/mock.py +0 -0
  439. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/ngarc.py +0 -0
  440. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/rclone.py +0 -0
  441. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/rfio.py +0 -0
  442. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/ssh.py +0 -0
  443. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/rse/protocols/xrootd.py +0 -0
  444. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/tests/__init__.py +0 -0
  445. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/tests/common.py +0 -0
  446. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/tests/common_server.py +0 -0
  447. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/__init__.py +0 -0
  448. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/bittorrent.py +0 -0
  449. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/bittorrent_driver.py +0 -0
  450. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +0 -0
  451. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/fts3.py +0 -0
  452. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/fts3_plugins.py +0 -0
  453. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/globus.py +0 -0
  454. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/globus_library.py +0 -0
  455. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/mock.py +0 -0
  456. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/transfertool/transfertool.py +0 -0
  457. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/version.py +0 -0
  458. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/__init__.py +0 -0
  459. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/__init__.py +0 -0
  460. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
  461. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
  462. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
  463. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +0 -0
  464. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/accounts.py +0 -0
  465. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/archives.py +0 -0
  466. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/auth.py +0 -0
  467. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/common.py +0 -0
  468. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/config.py +0 -0
  469. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/credentials.py +0 -0
  470. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/dids.py +0 -0
  471. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/dirac.py +0 -0
  472. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/export.py +0 -0
  473. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +0 -0
  474. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/identities.py +0 -0
  475. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/import.py +0 -0
  476. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +0 -0
  477. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/locks.py +0 -0
  478. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/main.py +0 -0
  479. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +0 -0
  480. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
  481. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
  482. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
  483. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/redirect.py +0 -0
  484. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/replicas.py +0 -0
  485. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/requests.py +0 -0
  486. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/rses.py +0 -0
  487. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/rules.py +0 -0
  488. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/scopes.py +0 -0
  489. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +0 -0
  490. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
  491. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
  492. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
  493. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/flaskapi/v1/vos.py +0 -0
  494. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/main.py +0 -0
  495. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/metrics.py +0 -0
  496. {rucio-34.3.0 → rucio-34.4.1}/lib/rucio/web/rest/ping.py +0 -0
  497. {rucio-34.3.0 → rucio-34.4.1}/pylintrc +0 -0
  498. {rucio-34.3.0 → rucio-34.4.1}/setup.cfg +0 -0
  499. {rucio-34.3.0 → rucio-34.4.1}/setup.py +0 -0
  500. {rucio-34.3.0 → rucio-34.4.1}/setuputil.py +0 -0
  501. {rucio-34.3.0 → rucio-34.4.1}/tests/test_abacus_account.py +0 -0
  502. {rucio-34.3.0 → rucio-34.4.1}/tests/test_abacus_collection_replica.py +0 -0
  503. {rucio-34.3.0 → rucio-34.4.1}/tests/test_abacus_rse.py +0 -0
  504. {rucio-34.3.0 → rucio-34.4.1}/tests/test_account.py +0 -0
  505. {rucio-34.3.0 → rucio-34.4.1}/tests/test_account_limits.py +0 -0
  506. {rucio-34.3.0 → rucio-34.4.1}/tests/test_api_external_representation.py +0 -0
  507. {rucio-34.3.0 → rucio-34.4.1}/tests/test_archive.py +0 -0
  508. {rucio-34.3.0 → rucio-34.4.1}/tests/test_auditor.py +0 -0
  509. {rucio-34.3.0 → rucio-34.4.1}/tests/test_auditor_hdfs.py +0 -0
  510. {rucio-34.3.0 → rucio-34.4.1}/tests/test_auditor_srmdumps.py +0 -0
  511. {rucio-34.3.0 → rucio-34.4.1}/tests/test_authentication.py +0 -0
  512. {rucio-34.3.0 → rucio-34.4.1}/tests/test_automatix.py +0 -0
  513. {rucio-34.3.0 → rucio-34.4.1}/tests/test_bad_replica.py +0 -0
  514. {rucio-34.3.0 → rucio-34.4.1}/tests/test_bb8.py +0 -0
  515. {rucio-34.3.0 → rucio-34.4.1}/tests/test_belleii.py +0 -0
  516. {rucio-34.3.0 → rucio-34.4.1}/tests/test_bin_rucio.py +0 -0
  517. {rucio-34.3.0 → rucio-34.4.1}/tests/test_boolean.py +0 -0
  518. {rucio-34.3.0 → rucio-34.4.1}/tests/test_clients.py +0 -0
  519. {rucio-34.3.0 → rucio-34.4.1}/tests/test_common_types.py +0 -0
  520. {rucio-34.3.0 → rucio-34.4.1}/tests/test_config.py +0 -0
  521. {rucio-34.3.0 → rucio-34.4.1}/tests/test_conveyor.py +0 -0
  522. {rucio-34.3.0 → rucio-34.4.1}/tests/test_conveyor_submitter.py +0 -0
  523. {rucio-34.3.0 → rucio-34.4.1}/tests/test_counter.py +0 -0
  524. {rucio-34.3.0 → rucio-34.4.1}/tests/test_credential.py +0 -0
  525. {rucio-34.3.0 → rucio-34.4.1}/tests/test_curl.py +0 -0
  526. {rucio-34.3.0 → rucio-34.4.1}/tests/test_daemons.py +0 -0
  527. {rucio-34.3.0 → rucio-34.4.1}/tests/test_dataset_replicas.py +0 -0
  528. {rucio-34.3.0 → rucio-34.4.1}/tests/test_db.py +0 -0
  529. {rucio-34.3.0 → rucio-34.4.1}/tests/test_did.py +0 -0
  530. {rucio-34.3.0 → rucio-34.4.1}/tests/test_did_meta_plugins.py +0 -0
  531. {rucio-34.3.0 → rucio-34.4.1}/tests/test_didtype.py +0 -0
  532. {rucio-34.3.0 → rucio-34.4.1}/tests/test_download.py +0 -0
  533. {rucio-34.3.0 → rucio-34.4.1}/tests/test_dumper.py +0 -0
  534. {rucio-34.3.0 → rucio-34.4.1}/tests/test_dumper_consistency.py +0 -0
  535. {rucio-34.3.0 → rucio-34.4.1}/tests/test_dumper_data_model.py +0 -0
  536. {rucio-34.3.0 → rucio-34.4.1}/tests/test_dumper_path_parsing.py +0 -0
  537. {rucio-34.3.0 → rucio-34.4.1}/tests/test_filter_engine.py +0 -0
  538. {rucio-34.3.0 → rucio-34.4.1}/tests/test_heartbeat.py +0 -0
  539. {rucio-34.3.0 → rucio-34.4.1}/tests/test_hermes.py +0 -0
  540. {rucio-34.3.0 → rucio-34.4.1}/tests/test_identity.py +0 -0
  541. {rucio-34.3.0 → rucio-34.4.1}/tests/test_impl_upload_download.py +0 -0
  542. {rucio-34.3.0 → rucio-34.4.1}/tests/test_import_export.py +0 -0
  543. {rucio-34.3.0 → rucio-34.4.1}/tests/test_judge_cleaner.py +0 -0
  544. {rucio-34.3.0 → rucio-34.4.1}/tests/test_judge_evaluator.py +0 -0
  545. {rucio-34.3.0 → rucio-34.4.1}/tests/test_judge_injector.py +0 -0
  546. {rucio-34.3.0 → rucio-34.4.1}/tests/test_judge_repairer.py +0 -0
  547. {rucio-34.3.0 → rucio-34.4.1}/tests/test_lifetime.py +0 -0
  548. {rucio-34.3.0 → rucio-34.4.1}/tests/test_message.py +0 -0
  549. {rucio-34.3.0 → rucio-34.4.1}/tests/test_meta_conventions.py +0 -0
  550. {rucio-34.3.0 → rucio-34.4.1}/tests/test_meta_did.py +0 -0
  551. {rucio-34.3.0 → rucio-34.4.1}/tests/test_module_import.py +0 -0
  552. {rucio-34.3.0 → rucio-34.4.1}/tests/test_monitor.py +0 -0
  553. {rucio-34.3.0 → rucio-34.4.1}/tests/test_multi_vo.py +0 -0
  554. {rucio-34.3.0 → rucio-34.4.1}/tests/test_naming_convention.py +0 -0
  555. {rucio-34.3.0 → rucio-34.4.1}/tests/test_oauthmanager.py +0 -0
  556. {rucio-34.3.0 → rucio-34.4.1}/tests/test_oidc.py +0 -0
  557. {rucio-34.3.0 → rucio-34.4.1}/tests/test_permission.py +0 -0
  558. {rucio-34.3.0 → rucio-34.4.1}/tests/test_pfns.py +0 -0
  559. {rucio-34.3.0 → rucio-34.4.1}/tests/test_ping.py +0 -0
  560. {rucio-34.3.0 → rucio-34.4.1}/tests/test_preparer.py +0 -0
  561. {rucio-34.3.0 → rucio-34.4.1}/tests/test_qos.py +0 -0
  562. {rucio-34.3.0 → rucio-34.4.1}/tests/test_quarantined_replica.py +0 -0
  563. {rucio-34.3.0 → rucio-34.4.1}/tests/test_reaper.py +0 -0
  564. {rucio-34.3.0 → rucio-34.4.1}/tests/test_redirect.py +0 -0
  565. {rucio-34.3.0 → rucio-34.4.1}/tests/test_replica_sorting.py +0 -0
  566. {rucio-34.3.0 → rucio-34.4.1}/tests/test_request.py +0 -0
  567. {rucio-34.3.0 → rucio-34.4.1}/tests/test_root_proxy.py +0 -0
  568. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse.py +0 -0
  569. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_expression_parser.py +0 -0
  570. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_lfn2path.py +0 -0
  571. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_protocol_gfal2.py +0 -0
  572. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_protocol_gfal2_impl.py +0 -0
  573. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_protocol_posix.py +0 -0
  574. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_protocol_rclone.py +0 -0
  575. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_protocol_rsync.py +0 -0
  576. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_protocol_srm.py +0 -0
  577. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_protocol_ssh.py +0 -0
  578. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_protocol_webdav.py +0 -0
  579. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_protocol_xrootd.py +0 -0
  580. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rse_selector.py +0 -0
  581. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rucio_server.py +0 -0
  582. {rucio-34.3.0 → rucio-34.4.1}/tests/test_rule.py +0 -0
  583. {rucio-34.3.0 → rucio-34.4.1}/tests/test_scope.py +0 -0
  584. {rucio-34.3.0 → rucio-34.4.1}/tests/test_subscription.py +0 -0
  585. {rucio-34.3.0 → rucio-34.4.1}/tests/test_throttler.py +0 -0
  586. {rucio-34.3.0 → rucio-34.4.1}/tests/test_tpc.py +0 -0
  587. {rucio-34.3.0 → rucio-34.4.1}/tests/test_trace.py +0 -0
  588. {rucio-34.3.0 → rucio-34.4.1}/tests/test_transfer.py +0 -0
  589. {rucio-34.3.0 → rucio-34.4.1}/tests/test_transfer_plugins.py +0 -0
  590. {rucio-34.3.0 → rucio-34.4.1}/tests/test_undertaker.py +0 -0
  591. {rucio-34.3.0 → rucio-34.4.1}/tests/test_utils.py +0 -0
  592. {rucio-34.3.0 → rucio-34.4.1}/tools/bootstrap.py +0 -0
  593. {rucio-34.3.0 → rucio-34.4.1}/tools/merge_rucio_configs.py +0 -0
  594. {rucio-34.3.0 → rucio-34.4.1}/tools/reset_database.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rucio
3
- Version: 34.3.0
3
+ Version: 34.4.1
4
4
  Summary: Rucio Package
5
5
  Home-page: https://rucio.cern.ch/
6
6
  Author: Rucio
@@ -20,7 +20,7 @@ Classifier: Environment :: No Input/Output (Daemon)
20
20
  Requires-Python: >=3.9, <4
21
21
  License-File: LICENSE
22
22
  License-File: AUTHORS.rst
23
- Requires-Dist: requests<=2.31.0,>=2.25.1
23
+ Requires-Dist: requests~=2.32.0
24
24
  Requires-Dist: urllib3~=1.26.18
25
25
  Requires-Dist: dogpile.cache~=1.2.2
26
26
  Requires-Dist: tabulate~=0.9.0
@@ -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)
@@ -12,9 +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
15
+ from collections.abc import Iterator, Sequence
16
16
  from copy import deepcopy
17
- from typing import TYPE_CHECKING
17
+ from typing import TYPE_CHECKING, Any
18
18
 
19
19
  import rucio.api.permission
20
20
  from rucio.common.constants import RESERVED_KEYS
@@ -29,7 +29,7 @@ from rucio.db.sqla.constants import DIDType
29
29
  from rucio.db.sqla.session import read_session, stream_session, transactional_session
30
30
 
31
31
  if TYPE_CHECKING:
32
- from typing import Any, Optional
32
+ from typing import Optional
33
33
 
34
34
  from sqlalchemy.orm import Session
35
35
 
@@ -67,7 +67,22 @@ def list_dids(scope, filters, did_type='collection', ignore_case=False, limit=No
67
67
 
68
68
 
69
69
  @transactional_session
70
- 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:
71
86
  """
72
87
  Add data did.
73
88
 
@@ -85,6 +100,10 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
85
100
  :param vo: The VO to act on.
86
101
  :param session: The database session in use.
87
102
  """
103
+ statuses = statuses or {}
104
+ meta = meta or {}
105
+ rules = rules or []
106
+ dids = dids or []
88
107
  v_did = {'name': name, 'type': did_type.upper(), 'scope': scope}
89
108
  validate_schema(name='did', obj=v_did, vo=vo)
90
109
  validate_schema(name='dids', obj=dids, vo=vo)
@@ -93,10 +112,9 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
93
112
  if not rucio.api.permission.has_permission(issuer=issuer, vo=vo, action='add_did', kwargs=kwargs, session=session):
94
113
  raise rucio.common.exception.AccessDenied('Account %s can not add data identifier to scope %s' % (issuer, scope))
95
114
 
96
- if account is not None:
97
- account = InternalAccount(account, vo=vo)
98
- issuer = InternalAccount(issuer, vo=vo)
99
- 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)
100
118
  for d in dids:
101
119
  d['scope'] = InternalScope(d['scope'], vo=vo)
102
120
  for r in rules:
@@ -108,7 +126,7 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
108
126
 
109
127
  if did_type == 'DATASET':
110
128
  # naming_convention validation
111
- 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)
112
130
 
113
131
  # merge extra_meta with meta
114
132
  for k in extra_meta or {}:
@@ -121,7 +139,7 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
121
139
  # Validate metadata
122
140
  meta_convention_core.validate_meta(meta=meta, did_type=DIDType[did_type.upper()], session=session)
123
141
 
124
- 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,
125
143
  statuses=statuses, meta=meta, rules=rules, lifetime=lifetime,
126
144
  dids=dids, rse_id=rse_id, session=session)
127
145
 
@@ -330,7 +348,7 @@ def list_content_history(scope, name, vo='def', *, session: "Session"):
330
348
 
331
349
 
332
350
  @stream_session
333
- 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]]:
334
352
  """
335
353
  List file contents of a list of data identifiers.
336
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)
@@ -13,7 +13,8 @@
13
13
  # limitations under the License.
14
14
 
15
15
  import datetime
16
- from typing import TYPE_CHECKING
16
+ from collections.abc import Iterator
17
+ from typing import TYPE_CHECKING, Any, Optional
17
18
 
18
19
  from rucio.api import permission
19
20
  from rucio.common import exception
@@ -418,7 +419,7 @@ def list_dataset_replicas_vp(scope, name, deep=False, vo='def', *, session: "Ses
418
419
 
419
420
 
420
421
  @stream_session
421
- def list_datasets_per_rse(rse, filters={}, limit=None, vo='def', *, session: "Session"):
422
+ def list_datasets_per_rse(rse: str, filters: Optional[dict[str, Any]] = None, limit: Optional[int] = None, vo: str = 'def', *, session: "Session") -> Iterator[dict[str, Any]]:
422
423
  """
423
424
  :param scope: The scope of the dataset.
424
425
  :param name: The name of the dataset.
@@ -430,6 +431,7 @@ def list_datasets_per_rse(rse, filters={}, limit=None, vo='def', *, session: "Se
430
431
  :returns: A list of dict dataset replicas
431
432
  """
432
433
 
434
+ filters = filters or {}
433
435
  rse_id = get_rse_id(rse=rse, vo=vo, session=session)
434
436
  if 'scope' in filters:
435
437
  filters['scope'] = InternalScope(filters['scope'], vo=vo)
@@ -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
@@ -109,7 +109,7 @@ def del_rse(rse, issuer, vo='def', *, session: "Session"):
109
109
 
110
110
 
111
111
  @read_session
112
- def list_rses(filters={}, vo='def', *, session: "Session"):
112
+ def list_rses(filters: "Optional[dict[str, Any]]" = None, vo: str = 'def', *, session: "Session") -> list[dict[str, Any]]:
113
113
  """
114
114
  Lists all RSEs.
115
115
 
@@ -119,8 +119,7 @@ def list_rses(filters={}, vo='def', *, session: "Session"):
119
119
 
120
120
  :returns: List of all RSEs.
121
121
  """
122
- if not filters:
123
- filters = {}
122
+ filters = filters or {}
124
123
 
125
124
  filters['vo'] = vo
126
125
 
@@ -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, Any
15
+ from collections.abc import Iterator
16
+ from typing import TYPE_CHECKING, Any, Optional
16
17
 
17
18
  from rucio.api.permission import has_permission
18
19
  from rucio.common.config import config_get_bool
@@ -134,7 +135,7 @@ def get_replication_rule(rule_id, issuer, vo='def', *, session: "Session"):
134
135
 
135
136
 
136
137
  @stream_session
137
- def list_replication_rules(filters={}, vo='def', *, session: "Session"):
138
+ def list_replication_rules(filters: Optional[dict[str, Any]] = None, vo: str = 'def', *, session: "Session") -> Iterator[dict[str, Any]]:
138
139
  """
139
140
  Lists replication rules based on a filter.
140
141
 
@@ -143,8 +144,7 @@ def list_replication_rules(filters={}, vo='def', *, session: "Session"):
143
144
  :param session: The database session in use.
144
145
  """
145
146
  # If filters is empty, create a new dict to avoid overwriting the function's default
146
- if not filters:
147
- filters = {}
147
+ filters = filters or {}
148
148
 
149
149
  if 'scope' in filters:
150
150
  scope = filters['scope']
@@ -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
  import rucio.api.permission
18
18
  import rucio.common.exception
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
26
26
 
27
27
 
28
28
  @read_session
29
- def list_scopes(filter_={}, vo='def', *, session: "Session"):
29
+ def list_scopes(filter_: Optional[dict[str, Any]] = None, vo: str = 'def', *, session: "Session") -> list[str]:
30
30
  """
31
31
  Lists all scopes.
32
32
 
@@ -37,8 +37,7 @@ def list_scopes(filter_={}, vo='def', *, session: "Session"):
37
37
  :returns: A list containing all scopes.
38
38
  """
39
39
  # If filter is empty, create a new dict to avoid overwriting the function's default
40
- if not filter_:
41
- filter_ = {}
40
+ filter_ = filter_ or {}
42
41
 
43
42
  if 'scope' in filter_:
44
43
  filter_['scope'] = InternalScope(scope=filter_['scope'], vo=vo)
@@ -77,8 +77,8 @@ class BaseClient:
77
77
 
78
78
  AUTH_RETRIES, REQUEST_RETRIES = 2, 3
79
79
  TOKEN_PATH_PREFIX = get_tmp_dir() + '/.rucio_'
80
- TOKEN_PREFIX = 'auth_token_'
81
- TOKEN_EXP_PREFIX = 'auth_token_exp_'
80
+ TOKEN_PREFIX = 'auth_token_' # noqa: S105
81
+ TOKEN_EXP_PREFIX = 'auth_token_exp_' # noqa: S105
82
82
 
83
83
  def __init__(self,
84
84
  rucio_host: Optional[str] = None,
@@ -25,6 +25,7 @@ import subprocess
25
25
  import time
26
26
  from queue import Empty, Queue, deque
27
27
  from threading import Thread
28
+ from typing import Any, Optional
28
29
 
29
30
  from rucio import version
30
31
  from rucio.client.client import Client
@@ -174,7 +175,14 @@ class DownloadClient:
174
175
  self.extraction_tools.append(BaseExtractionTool('tar', '--version', extract_args, logger=self.logger))
175
176
  self.extract_scope_convention = config_get('common', 'extract_scope', False, None)
176
177
 
177
- def download_pfns(self, items, num_threads=2, trace_custom_fields={}, traces_copy_out=None, deactivate_file_download_exceptions=False):
178
+ def download_pfns(
179
+ self,
180
+ items: list[dict[str, Any]],
181
+ num_threads: int = 2,
182
+ trace_custom_fields: Optional[dict[str, Any]] = None,
183
+ traces_copy_out: Optional[list[dict[str, Any]]] = None,
184
+ deactivate_file_download_exceptions: bool = False
185
+ ) -> list[dict[str, Any]]:
178
186
  """
179
187
  Download items with a given PFN. This function can only download files, no datasets.
180
188
 
@@ -202,6 +210,7 @@ class DownloadClient:
202
210
  :raises NotAllFilesDownloaded: if not all files could be downloaded
203
211
  :raises RucioException: if something unexpected went wrong during the download
204
212
  """
213
+ trace_custom_fields = trace_custom_fields or {}
205
214
  logger = self.logger
206
215
  trace_custom_fields['uuid'] = generate_uuid()
207
216
 
@@ -250,8 +259,15 @@ class DownloadClient:
250
259
 
251
260
  return self._check_output(output_items, deactivate_file_download_exceptions=deactivate_file_download_exceptions)
252
261
 
253
- def download_dids(self, items, num_threads=2, trace_custom_fields={}, traces_copy_out=None,
254
- deactivate_file_download_exceptions=False, sort=None):
262
+ def download_dids(
263
+ self,
264
+ items: list[dict[str, Any]],
265
+ num_threads: int = 2,
266
+ trace_custom_fields: Optional[dict[str, Any]] = None,
267
+ traces_copy_out: Optional[list[dict[str, Any]]] = None,
268
+ deactivate_file_download_exceptions: bool = False,
269
+ sort: Optional[str] = None
270
+ ) -> list[dict[str, Any]]:
255
271
  """
256
272
  Download items with given DIDs. This function can also download datasets and wildcarded DIDs.
257
273
 
@@ -286,6 +302,7 @@ class DownloadClient:
286
302
  :raises NotAllFilesDownloaded: if not all files could be downloaded
287
303
  :raises RucioException: if something unexpected went wrong during the download
288
304
  """
305
+ trace_custom_fields = trace_custom_fields or {}
289
306
  logger = self.logger
290
307
  trace_custom_fields['uuid'] = generate_uuid()
291
308
 
@@ -304,7 +321,15 @@ class DownloadClient:
304
321
 
305
322
  return self._check_output(output_items, deactivate_file_download_exceptions=deactivate_file_download_exceptions)
306
323
 
307
- def download_from_metalink_file(self, item, metalink_file_path, num_threads=2, trace_custom_fields={}, traces_copy_out=None, deactivate_file_download_exceptions=False):
324
+ def download_from_metalink_file(
325
+ self,
326
+ item: dict[str, Any],
327
+ metalink_file_path: str,
328
+ num_threads: int = 2,
329
+ trace_custom_fields: Optional[dict[str, Any]] = None,
330
+ traces_copy_out: Optional[list[dict[str, Any]]] = None,
331
+ deactivate_file_download_exceptions: bool = False
332
+ ) -> list[dict[str, Any]]:
308
333
  """
309
334
  Download items using a given metalink file.
310
335
 
@@ -327,6 +352,7 @@ class DownloadClient:
327
352
  :raises NotAllFilesDownloaded: if not all files could be downloaded
328
353
  :raises RucioException: if something unexpected went wrong during the download
329
354
  """
355
+ trace_custom_fields = trace_custom_fields or {}
330
356
  logger = self.logger
331
357
 
332
358
  logger(logging.INFO, 'Getting sources from metalink file')
@@ -351,7 +377,13 @@ class DownloadClient:
351
377
 
352
378
  return self._check_output(output_items, deactivate_file_download_exceptions=deactivate_file_download_exceptions)
353
379
 
354
- def _download_multithreaded(self, input_items, num_threads, trace_custom_fields={}, traces_copy_out=None):
380
+ def _download_multithreaded(
381
+ self,
382
+ input_items: list[dict[str, Any]],
383
+ num_threads: int,
384
+ trace_custom_fields: Optional[dict[str, Any]] = None,
385
+ traces_copy_out: Optional[list[dict[str, Any]]] = None
386
+ ) -> list[dict[str, Any]]:
355
387
  """
356
388
  Starts an appropriate number of threads to download items from the input list.
357
389
  (This function is meant to be used as class internal only)
@@ -363,6 +395,7 @@ class DownloadClient:
363
395
 
364
396
  :returns: list with output items as dictionaries
365
397
  """
398
+ trace_custom_fields = trace_custom_fields or {}
366
399
  logger = self.logger
367
400
 
368
401
  num_files = len(input_items)
@@ -730,7 +763,14 @@ class DownloadClient:
730
763
 
731
764
  return item
732
765
 
733
- def download_aria2c(self, items, trace_custom_fields={}, filters={}, deactivate_file_download_exceptions=False, sort=None):
766
+ def download_aria2c(
767
+ self,
768
+ items: list[dict[str, Any]],
769
+ trace_custom_fields: Optional[dict[str, Any]] = None,
770
+ filters: Optional[dict[str, Any]] = None,
771
+ deactivate_file_download_exceptions: bool = False,
772
+ sort: Optional[str] = None
773
+ ) -> list[dict[str, Any]]:
734
774
  """
735
775
  Uses aria2c to download the items with given DIDs. This function can also download datasets and wildcarded DIDs.
736
776
  It only can download files that are available via https/davs.
@@ -760,6 +800,8 @@ class DownloadClient:
760
800
  :raises NotAllFilesDownloaded: if not all files could be downloaded
761
801
  :raises RucioException: if something went wrong during the download (e.g. aria2c could not be started)
762
802
  """
803
+ trace_custom_fields = trace_custom_fields or {}
804
+ filters = filters or {}
763
805
  logger = self.logger
764
806
  trace_custom_fields['uuid'] = generate_uuid()
765
807
 
@@ -860,7 +902,13 @@ class DownloadClient:
860
902
  raise RucioException('Failed to initialise rpc proxy!', error)
861
903
  return (rpcproc, aria_rpc)
862
904
 
863
- def _download_items_aria2c(self, items, aria_rpc, rpc_auth, trace_custom_fields={}):
905
+ def _download_items_aria2c(
906
+ self,
907
+ items: list[dict[str, Any]],
908
+ aria_rpc: Any,
909
+ rpc_auth: str,
910
+ trace_custom_fields: Optional[dict[str, Any]] = None
911
+ ) -> list[dict[str, Any]]:
864
912
  """
865
913
  Uses aria2c to download the given items. Aria2c needs to be started
866
914
  as RPC background process first and a RPC proxy is needed.
@@ -873,6 +921,7 @@ class DownloadClient:
873
921
 
874
922
  :returns: a list of dictionaries with an entry for each file, containing the input options, the did, and the clientState
875
923
  """
924
+ trace_custom_fields = trace_custom_fields or {}
876
925
  logger = self.logger
877
926
 
878
927
  gid_to_item = {} # maps an aria2c download id (gid) to the download item
@@ -14,6 +14,7 @@
14
14
 
15
15
  from datetime import datetime
16
16
  from json import dumps, loads
17
+ from typing import Any, Optional
17
18
  from urllib.parse import quote_plus
18
19
 
19
20
  from requests.status_codes import codes
@@ -233,7 +234,17 @@ class ReplicaClient(BaseClient):
233
234
  exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
234
235
  raise exc_cls(exc_msg)
235
236
 
236
- def add_replica(self, rse, scope, name, bytes_, adler32, pfn=None, md5=None, meta={}):
237
+ def add_replica(
238
+ self,
239
+ rse: str,
240
+ scope: str,
241
+ name: str,
242
+ bytes_: int,
243
+ adler32: str,
244
+ pfn: Optional[str] = None,
245
+ md5: Optional[str] = None,
246
+ meta: Optional[dict[str, Any]] = None
247
+ ) -> bool:
237
248
  """
238
249
  Add file replicas to a RSE.
239
250
 
@@ -249,6 +260,7 @@ class ReplicaClient(BaseClient):
249
260
  :return: True if files were created successfully.
250
261
 
251
262
  """
263
+ meta = meta or {}
252
264
  dict_ = {'scope': scope, 'name': name, 'bytes': bytes_, 'meta': meta, 'adler32': adler32}
253
265
  if md5:
254
266
  dict_['md5'] = md5
@@ -286,7 +286,6 @@ class UploadClient:
286
286
  state_reason = str(error)
287
287
 
288
288
  if success:
289
- num_succeeded += 1
290
289
  trace['transferEnd'] = time.time()
291
290
  trace['clientState'] = 'DONE'
292
291
  file['state'] = 'A'
@@ -296,6 +295,7 @@ class UploadClient:
296
295
  if summary_file_path:
297
296
  summary.append(copy.deepcopy(file))
298
297
 
298
+ registration_succeeded = True
299
299
  if not no_register:
300
300
  if register_after_upload:
301
301
  self._register_file(file, registered_dataset_dids, ignore_availability=ignore_availability, activity=activity)
@@ -304,6 +304,7 @@ class UploadClient:
304
304
  try:
305
305
  self.client.update_replicas_states(rse, files=[replica_for_api])
306
306
  except Exception as error:
307
+ registration_succeeded = False
307
308
  logger(logging.ERROR, 'Failed to update replica state for file {}'.format(basename))
308
309
  logger(logging.DEBUG, 'Details: {}'.format(str(error)))
309
310
 
@@ -312,8 +313,13 @@ class UploadClient:
312
313
  try:
313
314
  self.client.attach_dids(file['dataset_scope'], file['dataset_name'], [file_did])
314
315
  except Exception as error:
315
- logger(logging.WARNING, 'Failed to attach file to the dataset')
316
+ registration_succeeded = False
317
+ logger(logging.ERROR, 'Failed to attach file to the dataset')
316
318
  logger(logging.DEBUG, 'Attaching to dataset {}'.format(str(error)))
319
+
320
+ # only report success if the registration operations succeeded as well
321
+ if registration_succeeded:
322
+ num_succeeded += 1
317
323
  else:
318
324
  trace['clientState'] = 'FAILED'
319
325
  trace['stateReason'] = state_reason
@@ -529,7 +529,7 @@ class Pcache:
529
529
 
530
530
  # Execute original command, no further action
531
531
  if (not (self.dst.startswith(self.scratch_dir) and self.accept(self.src) and (not self.reject(self.src)))):
532
- os.execvp(self.copy_util, self.args)
532
+ os.execvp(self.copy_util, self.args) # noqa: S606
533
533
  os._exit(1)
534
534
 
535
535
  # XXXX todo: fast-path - try to acquire lock
@@ -682,7 +682,7 @@ class Pcache:
682
682
  self.fail(103)
683
683
 
684
684
  def get_disk_usage(self):
685
- p = os.popen("df -P %s | tail -1" % self.pcache_dir, 'r')
685
+ p = os.popen("df -P %s | tail -1" % self.pcache_dir, 'r') # noqa: S605
686
686
  data = p.read()
687
687
  status = p.close()
688
688
  if status:
@@ -772,7 +772,7 @@ class Pcache:
772
772
  d = self.pcache_dir + d
773
773
  try:
774
774
  os.rename(d, d + ts)
775
- os.system("rm -rf %s &" % (d + ts))
775
+ os.system("rm -rf %s &" % (d + ts)) # noqa: S605
776
776
  except OSError as e:
777
777
  if e.errno != errno.ENOENT:
778
778
  self.log(ERROR, "%s: %s", d, e)