rucio-clients 37.4.0__tar.gz → 37.6.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-clients might be problematic. Click here for more details.

Files changed (200) hide show
  1. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/PKG-INFO +1 -1
  2. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/bin_legacy/rucio.py +1 -1
  3. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/bin_legacy/rucio_admin.py +1 -1
  4. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/did.py +2 -2
  5. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/rse.py +2 -3
  6. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/subscription.py +1 -1
  7. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/baseclient.py +5 -1
  8. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/didclient.py +16 -16
  9. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/downloadclient.py +15 -15
  10. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/lockclient.py +3 -3
  11. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/replicaclient.py +2 -2
  12. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/requestclient.py +6 -5
  13. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/touchclient.py +1 -1
  14. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/uploadclient.py +725 -181
  15. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/config.py +1 -2
  16. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/constants.py +16 -17
  17. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/didtype.py +2 -2
  18. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/pcache.py +20 -25
  19. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/plugins.py +10 -17
  20. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/schema/__init__.py +7 -5
  21. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/utils.py +19 -3
  22. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/ngarc.py +2 -2
  23. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/srm.py +1 -1
  24. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/webdav.py +8 -1
  25. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/rsemanager.py +2 -2
  26. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/vcsversion.py +3 -3
  27. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_account_limits.py +2 -2
  28. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_archive.py +1 -1
  29. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_bb8.py +3 -3
  30. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_belleii.py +4 -2
  31. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_bin_rucio.py +3 -3
  32. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_clients.py +1 -1
  33. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_conveyor.py +12 -3
  34. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_curl.py +9 -1
  35. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_did.py +18 -18
  36. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_did_meta_plugins.py +25 -26
  37. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_download.py +6 -6
  38. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_gateway_external_representation.py +2 -2
  39. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_multi_vo.py +1 -1
  40. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_oidc.py +1 -1
  41. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_permission.py +1 -1
  42. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_reaper.py +3 -3
  43. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_replica.py +2 -2
  44. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_replica_recoverer.py +1 -1
  45. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_replica_sorting.py +2 -2
  46. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_subscription.py +1 -1
  47. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_throttler.py +2 -1
  48. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_transfer_plugins.py +3 -3
  49. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_undertaker.py +2 -2
  50. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_utils.py +1 -1
  51. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/AUTHORS.rst +0 -0
  52. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/ChangeLog +0 -0
  53. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/LICENSE +0 -0
  54. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/MANIFEST.in +0 -0
  55. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/README.md +0 -0
  56. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/bin/rucio +0 -0
  57. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/bin/rucio-admin +0 -0
  58. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/etc/rse-accounts.cfg.template +0 -0
  59. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/etc/rucio.cfg.atlas.client.template +0 -0
  60. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/etc/rucio.cfg.template +0 -0
  61. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/__init__.py +0 -0
  62. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/alembicrevision.py +0 -0
  63. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/__init__.py +0 -0
  64. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/account.py +0 -0
  65. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/bin_legacy/__init__.py +0 -0
  66. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/command.py +0 -0
  67. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/config.py +0 -0
  68. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/download.py +0 -0
  69. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/lifetime_exception.py +0 -0
  70. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/replica.py +0 -0
  71. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/rule.py +0 -0
  72. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/scope.py +0 -0
  73. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/upload.py +0 -0
  74. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/cli/utils.py +0 -0
  75. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/__init__.py +0 -0
  76. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/accountclient.py +0 -0
  77. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/accountlimitclient.py +0 -0
  78. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/client.py +0 -0
  79. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/configclient.py +0 -0
  80. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/credentialclient.py +0 -0
  81. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/diracclient.py +0 -0
  82. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/exportclient.py +0 -0
  83. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/fileclient.py +0 -0
  84. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/importclient.py +0 -0
  85. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/lifetimeclient.py +0 -0
  86. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/metaconventionsclient.py +0 -0
  87. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/pingclient.py +0 -0
  88. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/richclient.py +0 -0
  89. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/rseclient.py +0 -0
  90. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/ruleclient.py +0 -0
  91. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/scopeclient.py +0 -0
  92. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/client/subscriptionclient.py +0 -0
  93. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/__init__.py +0 -0
  94. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/bittorrent.py +0 -0
  95. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/cache.py +0 -0
  96. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/checksum.py +0 -0
  97. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/client.py +0 -0
  98. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/constraints.py +0 -0
  99. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/exception.py +0 -0
  100. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/extra.py +0 -0
  101. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/logging.py +0 -0
  102. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/policy.py +0 -0
  103. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/schema/generic.py +0 -0
  104. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
  105. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/stomp_utils.py +0 -0
  106. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/stopwatch.py +0 -0
  107. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/test_rucio_server.py +0 -0
  108. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/common/types.py +0 -0
  109. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/__init__.py +0 -0
  110. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/__init__.py +0 -0
  111. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
  112. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/cache.py +0 -0
  113. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/dummy.py +0 -0
  114. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/gfal.py +0 -0
  115. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/globus.py +0 -0
  116. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
  117. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/mock.py +0 -0
  118. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/posix.py +0 -0
  119. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/protocol.py +0 -0
  120. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/rclone.py +0 -0
  121. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/rfio.py +0 -0
  122. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/ssh.py +0 -0
  123. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/storm.py +0 -0
  124. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
  125. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/rse/translation.py +0 -0
  126. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio/version.py +0 -0
  127. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/lib/rucio_clients.egg-info/SOURCES.txt +0 -0
  128. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/pyproject.toml +0 -0
  129. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/requirements/requirements.client.txt +0 -0
  130. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/setup.cfg +0 -0
  131. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/setup.py +0 -0
  132. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/setuputil.py +0 -0
  133. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_abacus_account.py +0 -0
  134. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_abacus_collection_replica.py +0 -0
  135. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_abacus_rse.py +0 -0
  136. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_account.py +0 -0
  137. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_auditor.py +0 -0
  138. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_auditor_hdfs.py +0 -0
  139. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_auditor_srmdumps.py +0 -0
  140. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_authentication.py +0 -0
  141. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_automatix.py +0 -0
  142. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_bad_replica.py +0 -0
  143. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_boolean.py +0 -0
  144. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_cli_client_structure.py +0 -0
  145. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_config.py +0 -0
  146. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_conveyor_submitter.py +0 -0
  147. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_counter.py +0 -0
  148. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_credential.py +0 -0
  149. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_daemons.py +0 -0
  150. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_dataset_replicas.py +0 -0
  151. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_db.py +0 -0
  152. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_dumper.py +0 -0
  153. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_filter_engine.py +0 -0
  154. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_heartbeat.py +0 -0
  155. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_hermes.py +0 -0
  156. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_identity.py +0 -0
  157. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_impl_upload_download.py +0 -0
  158. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_import_export.py +0 -0
  159. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_judge_cleaner.py +0 -0
  160. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_judge_evaluator.py +0 -0
  161. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_judge_injector.py +0 -0
  162. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_judge_repairer.py +0 -0
  163. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_lifetime.py +0 -0
  164. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_message.py +0 -0
  165. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_meta_conventions.py +0 -0
  166. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_meta_did.py +0 -0
  167. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_module_import.py +0 -0
  168. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_monitor.py +0 -0
  169. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_naming_convention.py +0 -0
  170. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_oauthmanager.py +0 -0
  171. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_pfns.py +0 -0
  172. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_ping.py +0 -0
  173. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_policy_package.py +0 -0
  174. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_preparer.py +0 -0
  175. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_qos.py +0 -0
  176. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_quarantined_replica.py +0 -0
  177. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_redirect.py +0 -0
  178. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_request.py +0 -0
  179. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_root_proxy.py +0 -0
  180. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse.py +0 -0
  181. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_expression_parser.py +0 -0
  182. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_lfn2path.py +0 -0
  183. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_protocol_gfal2.py +0 -0
  184. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
  185. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_protocol_posix.py +0 -0
  186. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_protocol_rclone.py +0 -0
  187. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_protocol_rsync.py +0 -0
  188. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_protocol_srm.py +0 -0
  189. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_protocol_ssh.py +0 -0
  190. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_protocol_webdav.py +0 -0
  191. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_protocol_xrootd.py +0 -0
  192. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rse_selector.py +0 -0
  193. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rucio_server.py +0 -0
  194. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_rule.py +0 -0
  195. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_scope.py +0 -0
  196. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_tpc.py +0 -0
  197. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_trace.py +0 -0
  198. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_transfer.py +0 -0
  199. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tests/test_upload.py +0 -0
  200. {rucio_clients-37.4.0 → rucio_clients-37.6.0}/tools/merge_rucio_configs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rucio-clients
3
- Version: 37.4.0
3
+ Version: 37.6.0
4
4
  Summary: Rucio Client Lite Package
5
5
  Home-page: https://rucio.cern.ch/
6
6
  Author: Rucio
@@ -1266,7 +1266,7 @@ def add_rule(args, client, logger, console, spinner):
1266
1266
  """
1267
1267
  %(prog)s add-rule <did> <copies> <rse-expression> [options]
1268
1268
 
1269
- Add a rule to a did.
1269
+ Add a rule to a DID.
1270
1270
  """
1271
1271
 
1272
1272
  dids = []
@@ -752,7 +752,7 @@ def add_scope(args, client, logger, console, spinner):
752
752
 
753
753
  """
754
754
  client.add_scope(account=args.account, scope=args.scope)
755
- print('Added new scope to account: %s-%s' % (args.scope, args.account))
755
+ print(f'Added new scope to {args.account}: {args.scope}')
756
756
  return SUCCESS
757
757
 
758
758
 
@@ -130,7 +130,7 @@ def content_history(ctx, dids):
130
130
  @click.argument("dids", nargs=-1)
131
131
  @click.pass_context
132
132
  def content_add_(ctx, to_did, from_file, dids):
133
- """Attach a list [dids] of Data IDentifiers (file or collection-type) to an other Data IDentifier (collection-type)"""
133
+ """Attach a list [dids] of data identifiers (file or collection-type) to another data identifier (collection-type)"""
134
134
  args = Arguments({"no_pager": ctx.obj.no_pager, "dids": dids, "todid": to_did, "fromfile": from_file})
135
135
  attach(args, ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
136
136
 
@@ -140,7 +140,7 @@ def content_add_(ctx, to_did, from_file, dids):
140
140
  @click.argument("dids", nargs=-1)
141
141
  @click.pass_context
142
142
  def content_remove(ctx, dids, from_did):
143
- """Detach [dids], a list of DIDs (file or collection-type) from an other Data Identifier (collection type)"""
143
+ """Detach [dids], a list of DIDs (file or collection-type) from another Data Identifier (collection type)"""
144
144
  args = Arguments({"no_pager": ctx.obj.no_pager, "dids": dids, "fromdid": from_did})
145
145
  detach(args, ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
146
146
 
@@ -55,11 +55,10 @@ def list_(ctx, rses, csv):
55
55
 
56
56
  @rse.command("show")
57
57
  @click.argument("rse-name")
58
- @click.option("--csv", is_flag=True, default=False, help="Output list of RSE property key and values as a csv")
59
58
  @click.pass_context
60
- def show(ctx, rse_name, csv):
59
+ def show(ctx, rse_name):
61
60
  """Usage, protocols, settings, and attributes for a given RSE"""
62
- info_rse(Arguments({"no_pager": ctx.obj.no_pager, "rse": rse_name, "csv": csv}), ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
61
+ info_rse(Arguments({"no_pager": ctx.obj.no_pager, "rse": rse_name}), ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
63
62
 
64
63
 
65
64
  @rse.command("add")
@@ -68,6 +68,6 @@ def add_(ctx, subscription_name, did_filter, rule, comment, lifetime, account, p
68
68
  @click.pass_context
69
69
  def touch(ctx, dids):
70
70
  """Reevaluate list of DIDs against all active subscriptions"""
71
- # TODO make reeval accept dids as a list
71
+ # TODO make reeval accept DIDs as a list
72
72
  dids = ",".join(dids)
73
73
  reevaluate_did_for_subscription(Arguments({"no_pager": ctx.obj.no_pager, "dids": dids}), ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
@@ -967,7 +967,11 @@ class BaseClient:
967
967
  if not os.path.isdir(self.token_path):
968
968
  try:
969
969
  self.logger.debug('rucio token folder \'%s\' not found. Create it.' % self.token_path)
970
- makedirs(self.token_path, 0o700)
970
+ try:
971
+ makedirs(self.token_path, 0o700)
972
+ except FileExistsError:
973
+ msg = f'Token directory already exists at {self.token_path} - skipping'
974
+ self.logger.debug(msg)
971
975
  except Exception:
972
976
  raise
973
977
 
@@ -55,7 +55,7 @@ class DIDClient(BaseClient):
55
55
  like <key>.<operation>, e.g. key1 >= value1 is equivalent to {'key1.gte': value}, where <operation> belongs to one
56
56
  of the set {'lte', 'gte', 'gt', 'lt', 'ne' or ''}. Equivalence doesn't require an operator.
57
57
  did_type :
58
- The type of the did: 'all'(container, dataset or file)|'collection'(dataset or container)|'dataset'|'container'|'file'
58
+ The type of the DID: 'all'(container, dataset or file)|'collection'(dataset or container)|'dataset'|'container'|'file'
59
59
  long :
60
60
  Long format option to display more information for each DID.
61
61
  recursive :
@@ -325,14 +325,14 @@ class DIDClient(BaseClient):
325
325
  ignore_duplicate: bool = False
326
326
  ) -> bool:
327
327
  """
328
- Add dids to dids.
328
+ Add DIDs to DIDs.
329
329
 
330
330
  Parameters
331
331
  ----------
332
332
  attachments :
333
333
  The attachments.
334
- An attachment contains: "scope", "name", "dids".
335
- dids is: [{'scope': scope, 'name': name}, ...]
334
+ An attachment contains: "scope", "name", "DIDs".
335
+ DIDs is: [{'scope': scope, 'name': name}, ...]
336
336
  ignore_duplicate :
337
337
  If True, ignore duplicate entries.
338
338
  """
@@ -358,8 +358,8 @@ class DIDClient(BaseClient):
358
358
  ----------
359
359
  attachments :
360
360
  The attachments.
361
- An attachment contains: "scope", "name", "dids".
362
- dids is: [{'scope': scope, 'name': name}, ...]
361
+ An attachment contains: "scope", "name", "DIDs".
362
+ DIDs is: [{'scope': scope, 'name': name}, ...]
363
363
  ignore_duplicate :
364
364
  If True, ignore duplicate entries.
365
365
  """
@@ -377,8 +377,8 @@ class DIDClient(BaseClient):
377
377
  ----------
378
378
  attachments :
379
379
  The attachments.
380
- An attachment contains: "scope", "name", "dids".
381
- dids is: [{'scope': scope, 'name': name}, ...]
380
+ An attachment contains: "scope", "name", "DIDs".
381
+ DIDs is: [{'scope': scope, 'name': name}, ...]
382
382
  """
383
383
  return self.attach_dids_to_dids(attachments=attachments)
384
384
 
@@ -393,8 +393,8 @@ class DIDClient(BaseClient):
393
393
  ----------
394
394
  attachments :
395
395
  The attachments.
396
- An attachment contains: "scope", "name", "dids".
397
- dids is: [{'scope': scope, 'name': name}, ...]
396
+ An attachment contains: "scope", "name", "DIDs".
397
+ DIDs is: [{'scope': scope, 'name': name}, ...]
398
398
  """
399
399
  return self.attach_dids_to_dids(attachments=attachments)
400
400
 
@@ -661,7 +661,7 @@ class DIDClient(BaseClient):
661
661
  Parameters
662
662
  ----------
663
663
  dids :
664
- A list of dids.
664
+ A list of DIDs.
665
665
  inherit :
666
666
  A boolean. If set to true, the metadata of the parent are concatenated.
667
667
  plugin :
@@ -752,7 +752,7 @@ class DIDClient(BaseClient):
752
752
  Parameters
753
753
  ----------
754
754
  dids :
755
- A list of dids including metadata, i.e.
755
+ A list of DIDs including metadata, i.e.
756
756
  [{'scope': scope1, 'name': name1, 'meta': {key1: value1, key2: value2}}, ...].
757
757
  recursive :
758
758
  Option to propagate the metadata update to content.
@@ -902,7 +902,7 @@ class DIDClient(BaseClient):
902
902
  Returns
903
903
  -------
904
904
 
905
- A did
905
+ A DID
906
906
  """
907
907
 
908
908
  path = '/'.join([self.DIDS_BASEURL, guid, 'guid'])
@@ -954,7 +954,7 @@ class DIDClient(BaseClient):
954
954
  name: str
955
955
  ) -> "Iterator[dict[str, Any]]":
956
956
  """
957
- List parent dataset/containers of a did.
957
+ List parent dataset/containers of a DID.
958
958
 
959
959
  Parameters
960
960
  ----------
@@ -1016,12 +1016,12 @@ class DIDClient(BaseClient):
1016
1016
 
1017
1017
  def resurrect(self, dids: "Sequence[Mapping[str, Any]]") -> bool:
1018
1018
  """
1019
- Resurrect a list of dids.
1019
+ Resurrect a list of DIDs.
1020
1020
 
1021
1021
  Parameters
1022
1022
  ----------
1023
1023
  dids :
1024
- A list of dids [{'scope': scope, 'name': name}, ...]
1024
+ A list of DIDs [{'scope': scope, 'name': name}, ...]
1025
1025
  """
1026
1026
  path = '/'.join([self.DIDS_BASEURL, 'resurrect'])
1027
1027
  url = build_url(choice(self.list_hosts), path=path)
@@ -285,7 +285,7 @@ class DownloadClient:
285
285
  -------
286
286
 
287
287
  A list of dictionaries with an entry for each file, containing the input options,
288
- the did, and the clientState. clientState can be one of the following:
288
+ the DID, and the clientState. clientState can be one of the following:
289
289
  ALREADY_DONE, DONE, FILE_NOT_FOUND, FAIL_VALIDATE, FAILED
290
290
 
291
291
  Raises
@@ -422,7 +422,7 @@ class DownloadClient:
422
422
  -------
423
423
 
424
424
  A list of dictionaries with an entry for each file, containing the input options,
425
- the did, and the clientState.
425
+ the DID, and the clientState.
426
426
 
427
427
  Raises
428
428
  ------
@@ -499,7 +499,7 @@ class DownloadClient:
499
499
  -------
500
500
 
501
501
  A list of dictionaries with an entry for each file, containing the input options,
502
- the did, and the clientState.
502
+ the DID, and the clientState.
503
503
 
504
504
  Raises
505
505
  ------
@@ -1021,7 +1021,7 @@ class DownloadClient:
1021
1021
  -------
1022
1022
 
1023
1023
  A list of dictionaries with an entry for each file, containing the input options,
1024
- the did, and the clientState.
1024
+ the DID, and the clientState.
1025
1025
 
1026
1026
 
1027
1027
  Raises
@@ -1173,7 +1173,7 @@ class DownloadClient:
1173
1173
  -------
1174
1174
 
1175
1175
  A list of dictionaries with an entry for each file, containing the input options,
1176
- the did, and the clientState.
1176
+ the DID, and the clientState.
1177
1177
  """
1178
1178
  trace_custom_fields = trace_custom_fields or {}
1179
1179
  logger = self.logger
@@ -1322,8 +1322,8 @@ class DownloadClient:
1322
1322
 
1323
1323
  def _resolve_one_item_dids(self, item: dict[str, Any]) -> "Iterator[dict[str, Any]]":
1324
1324
  """
1325
- Resolve scopes or wildcard DIDs to lists of full did names:
1326
-
1325
+ Resolve scopes or wildcard DIDs to lists of full DID names:
1326
+
1327
1327
  Parameters
1328
1328
  ----------
1329
1329
  item :
@@ -1456,10 +1456,10 @@ class DownloadClient:
1456
1456
  if not found_compatible_group:
1457
1457
  item_groups.append([item])
1458
1458
 
1459
- # List replicas for dids
1459
+ # List replicas for DIDs
1460
1460
  merged_items_with_sources = []
1461
1461
  for item_group in item_groups:
1462
- # Take configuration from the first item in the group; but dids from all items
1462
+ # Take configuration from the first item in the group; but DIDs from all items
1463
1463
  item = item_group[0]
1464
1464
  input_dids = {DID(did): did
1465
1465
  for item in item_group
@@ -1512,15 +1512,15 @@ class DownloadClient:
1512
1512
  logger(logging.DEBUG, 'num resolved files: %s' % len(file_items))
1513
1513
 
1514
1514
  if not nrandom or nrandom != len(file_items):
1515
- # If list_replicas didn't resolve any file DIDs for any input did, we pass through the input DID.
1515
+ # If list_replicas didn't resolve any file DIDs for any input DID, we pass through the input DID.
1516
1516
  # This is done to keep compatibility with later code which generates "FILE_NOT_FOUND" traces
1517
1517
  # and output items.
1518
1518
  # In the special case of nrandom, when serverside filtering is applied, it's "normal" for some input
1519
- # dids to be ignored as long as we got exactly nrandom file_items from the server.
1519
+ # DIDs to be ignored as long as we got exactly nrandom file_items from the server.
1520
1520
  for input_did in input_dids:
1521
1521
  if not any([input_did == f['did'] or str(input_did) in f['parent_dids'] for f in file_items]):
1522
1522
  logger(logging.ERROR, 'DID does not exist: %s' % input_did)
1523
- # TODO: store did directly as DIDType object
1523
+ # TODO: store DID directly as DIDType object
1524
1524
  file_items.append({'did': str(input_did), 'adler32': None, 'md5': None, 'sources': [], 'parent_dids': set(), 'impl': impl or None})
1525
1525
 
1526
1526
  # filtering out tape sources
@@ -1534,7 +1534,7 @@ class DownloadClient:
1534
1534
  logger(logging.WARNING, 'The requested DID {} only has replicas on tape. Direct download from tape is prohibited. '
1535
1535
  'Please request a transfer to a non-tape endpoint.'.format(file_item['did']))
1536
1536
 
1537
- # Match the file did back to the dids which were provided to list_replicas.
1537
+ # Match the file DID back to the DIDs which were provided to list_replicas.
1538
1538
  # Later, this will allow to match the file back to input_items via did_to_input_items
1539
1539
  for file_item in file_items:
1540
1540
  file_did = DID(file_item['did'])
@@ -1628,7 +1628,7 @@ class DownloadClient:
1628
1628
 
1629
1629
  all_dest_file_paths = set()
1630
1630
 
1631
- # get replicas for every file of the given dids
1631
+ # get replicas for every file of the given DIDs
1632
1632
  for file_item in file_items:
1633
1633
  file_did = DID(file_item['did'])
1634
1634
  input_items = list(itertools.chain.from_iterable(did_to_input_items.get(did, []) for did in file_item['input_dids']))
@@ -1676,7 +1676,7 @@ class DownloadClient:
1676
1676
  file_item['dest_file_paths'] = list(dest_file_paths)
1677
1677
  file_item['temp_file_path'] = '%s.part' % file_item['dest_file_paths'][0]
1678
1678
 
1679
- # the file did str is not an unique key for this dict because multiple calls of list_replicas
1679
+ # the file DID str is not a unique key for this dict because multiple calls of list_replicas
1680
1680
  # could result in the same DID multiple times. So we're using the id of the dictionary objects
1681
1681
  fiid = id(file_item)
1682
1682
  fiid_to_file_item[fiid] = file_item
@@ -41,9 +41,9 @@ class LockClient(BaseClient):
41
41
  Parameters
42
42
  ----------
43
43
  scope :
44
- The scope of the did of the locks to list.
44
+ The scope of the DID of the locks to list.
45
45
  name :
46
- The name of the did of the locks to list.
46
+ The name of the DID of the locks to list.
47
47
 
48
48
  """
49
49
 
@@ -80,7 +80,7 @@ class LockClient(BaseClient):
80
80
  list of dictionaries with lock info
81
81
  """
82
82
 
83
- # convert did list to list of dictionaries
83
+ # convert DID list to list of dictionaries
84
84
  if not all(did.get("type", "dataset") in ("dataset", "container") for did in dids):
85
85
  raise ValueError("DID type can be either 'container' or 'dataset'")
86
86
 
@@ -416,7 +416,7 @@ class ReplicaClient(BaseClient):
416
416
 
417
417
  def list_dataset_replicas(self, scope, name, deep=False):
418
418
  """
419
- List dataset replicas for a did (scope:name).
419
+ List dataset replicas for a DID (scope:name).
420
420
 
421
421
  Parameters
422
422
  ----------
@@ -446,7 +446,7 @@ class ReplicaClient(BaseClient):
446
446
 
447
447
  def list_dataset_replicas_bulk(self, dids):
448
448
  """
449
- List dataset replicas for a did (scope:name).
449
+ List dataset replicas for a DID (scope:name).
450
450
 
451
451
  Parameters
452
452
  ----------
@@ -19,8 +19,8 @@ from urllib.parse import quote_plus
19
19
  from requests.status_codes import codes
20
20
 
21
21
  from rucio.client.baseclient import BaseClient, choice
22
+ from rucio.common.constants import TransferLimitDirection
22
23
  from rucio.common.utils import build_url
23
- from rucio.db.sqla.constants import TransferLimitDirection
24
24
 
25
25
  if TYPE_CHECKING:
26
26
  from collections.abc import Iterator, Sequence
@@ -192,14 +192,15 @@ class RequestClient(BaseClient):
192
192
  :param strategy: defines how to handle datasets: `fifo` (each file released separately) or `grouped_fifo` (wait for the entire dataset to fit)
193
193
  :param transfers: Current number of active transfers
194
194
  :param waitings: Current number of waiting transfers
195
-
195
+
196
196
  :returns: True if the transfer limit was deleted
197
197
  """
198
198
  path = '/'.join([self.REQUEST_BASEURL, 'transfer_limits'])
199
199
  url = build_url(choice(self.list_hosts), path=path)
200
- data = dumps({'rse_expression': rse_expression, 'activity': activity, 'direction': direction.value,
201
- 'max_transfers': max_transfers, 'volume': volume, 'deadline': deadline, 'strategy': strategy,
202
- 'transfers': transfers, 'waitings': waitings})
200
+ data = dumps({'rse_expression': rse_expression, 'activity': activity,
201
+ 'direction': direction.value, 'max_transfers': max_transfers,
202
+ 'volume': volume, 'deadline': deadline, 'strategy': strategy,
203
+ 'transfers': transfers, 'waitings': waitings})
203
204
  r = self._send_request(url, type_='PUT', data=data)
204
205
 
205
206
  if r.status_code == codes.created:
@@ -49,7 +49,7 @@ class TouchClient(BaseClient):
49
49
  Raises
50
50
  ------
51
51
  DataIdentifierNotFound
52
- If given dids does not exist.
52
+ If given DIDs does not exist.
53
53
  RSENotFound
54
54
  If rse is not None and given rse does not exist.
55
55
  UnsupportedDIDType