rucio-clients 37.3.0__tar.gz → 37.5.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 (201) hide show
  1. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/PKG-INFO +1 -1
  2. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/etc/rucio.cfg.template +0 -1
  3. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/rule.py +1 -1
  4. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/accountclient.py +205 -60
  5. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/accountlimitclient.py +84 -25
  6. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/baseclient.py +85 -48
  7. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/client.py +49 -41
  8. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/configclient.py +36 -13
  9. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/credentialclient.py +16 -6
  10. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/didclient.py +321 -133
  11. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/diracclient.py +13 -6
  12. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/downloadclient.py +435 -165
  13. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/exportclient.py +8 -2
  14. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/fileclient.py +10 -3
  15. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/importclient.py +4 -1
  16. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/lifetimeclient.py +48 -31
  17. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/lockclient.py +22 -7
  18. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/metaconventionsclient.py +59 -21
  19. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/pingclient.py +3 -1
  20. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/replicaclient.py +213 -96
  21. rucio_clients-37.5.0/lib/rucio/client/requestclient.py +233 -0
  22. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/rseclient.py +385 -160
  23. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/ruleclient.py +147 -51
  24. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/scopeclient.py +35 -10
  25. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/subscriptionclient.py +60 -27
  26. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/touchclient.py +16 -7
  27. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/constants.py +14 -17
  28. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/utils.py +18 -2
  29. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/rsemanager.py +2 -2
  30. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/vcsversion.py +3 -3
  31. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_cli_client_structure.py +13 -8
  32. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_clients.py +4 -3
  33. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_conveyor.py +9 -0
  34. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_gateway_external_representation.py +14 -5
  35. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_multi_vo.py +47 -15
  36. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_throttler.py +2 -1
  37. rucio_clients-37.3.0/lib/rucio/client/requestclient.py +0 -125
  38. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/AUTHORS.rst +0 -0
  39. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/ChangeLog +0 -0
  40. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/LICENSE +0 -0
  41. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/MANIFEST.in +0 -0
  42. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/README.md +0 -0
  43. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/bin/rucio +0 -0
  44. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/bin/rucio-admin +0 -0
  45. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/etc/rse-accounts.cfg.template +0 -0
  46. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/etc/rucio.cfg.atlas.client.template +0 -0
  47. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/__init__.py +0 -0
  48. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/alembicrevision.py +0 -0
  49. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/__init__.py +0 -0
  50. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/account.py +0 -0
  51. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/bin_legacy/__init__.py +0 -0
  52. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/bin_legacy/rucio.py +0 -0
  53. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/bin_legacy/rucio_admin.py +0 -0
  54. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/command.py +0 -0
  55. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/config.py +0 -0
  56. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/did.py +0 -0
  57. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/download.py +0 -0
  58. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/lifetime_exception.py +0 -0
  59. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/replica.py +0 -0
  60. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/rse.py +0 -0
  61. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/scope.py +0 -0
  62. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/subscription.py +0 -0
  63. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/upload.py +0 -0
  64. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/cli/utils.py +0 -0
  65. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/__init__.py +0 -0
  66. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/richclient.py +0 -0
  67. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/client/uploadclient.py +0 -0
  68. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/__init__.py +0 -0
  69. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/bittorrent.py +0 -0
  70. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/cache.py +0 -0
  71. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/checksum.py +0 -0
  72. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/client.py +0 -0
  73. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/config.py +0 -0
  74. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/constraints.py +0 -0
  75. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/didtype.py +0 -0
  76. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/exception.py +0 -0
  77. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/extra.py +0 -0
  78. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/logging.py +0 -0
  79. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/pcache.py +0 -0
  80. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/plugins.py +0 -0
  81. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/policy.py +0 -0
  82. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/schema/__init__.py +0 -0
  83. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/schema/generic.py +0 -0
  84. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
  85. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/stomp_utils.py +0 -0
  86. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/stopwatch.py +0 -0
  87. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/test_rucio_server.py +0 -0
  88. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/common/types.py +0 -0
  89. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/__init__.py +0 -0
  90. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/__init__.py +0 -0
  91. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
  92. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/cache.py +0 -0
  93. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/dummy.py +0 -0
  94. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/gfal.py +0 -0
  95. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/globus.py +0 -0
  96. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
  97. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/mock.py +0 -0
  98. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/ngarc.py +0 -0
  99. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/posix.py +0 -0
  100. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/protocol.py +0 -0
  101. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/rclone.py +0 -0
  102. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/rfio.py +0 -0
  103. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/srm.py +0 -0
  104. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/ssh.py +0 -0
  105. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/storm.py +0 -0
  106. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/webdav.py +0 -0
  107. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
  108. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/rse/translation.py +0 -0
  109. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio/version.py +0 -0
  110. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/lib/rucio_clients.egg-info/SOURCES.txt +0 -0
  111. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/pyproject.toml +0 -0
  112. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/requirements/requirements.client.txt +0 -0
  113. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/setup.cfg +0 -0
  114. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/setup.py +0 -0
  115. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/setuputil.py +0 -0
  116. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_abacus_account.py +0 -0
  117. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_abacus_collection_replica.py +0 -0
  118. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_abacus_rse.py +0 -0
  119. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_account.py +0 -0
  120. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_account_limits.py +0 -0
  121. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_archive.py +0 -0
  122. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_auditor.py +0 -0
  123. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_auditor_hdfs.py +0 -0
  124. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_auditor_srmdumps.py +0 -0
  125. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_authentication.py +0 -0
  126. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_automatix.py +0 -0
  127. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_bad_replica.py +0 -0
  128. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_bb8.py +0 -0
  129. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_belleii.py +0 -0
  130. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_bin_rucio.py +0 -0
  131. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_boolean.py +0 -0
  132. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_config.py +0 -0
  133. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_conveyor_submitter.py +0 -0
  134. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_counter.py +0 -0
  135. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_credential.py +0 -0
  136. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_curl.py +0 -0
  137. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_daemons.py +0 -0
  138. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_dataset_replicas.py +0 -0
  139. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_db.py +0 -0
  140. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_did.py +0 -0
  141. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_did_meta_plugins.py +0 -0
  142. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_download.py +0 -0
  143. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_dumper.py +0 -0
  144. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_filter_engine.py +0 -0
  145. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_heartbeat.py +0 -0
  146. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_hermes.py +0 -0
  147. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_identity.py +0 -0
  148. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_impl_upload_download.py +0 -0
  149. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_import_export.py +0 -0
  150. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_judge_cleaner.py +0 -0
  151. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_judge_evaluator.py +0 -0
  152. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_judge_injector.py +0 -0
  153. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_judge_repairer.py +0 -0
  154. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_lifetime.py +0 -0
  155. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_message.py +0 -0
  156. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_meta_conventions.py +0 -0
  157. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_meta_did.py +0 -0
  158. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_module_import.py +0 -0
  159. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_monitor.py +0 -0
  160. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_naming_convention.py +0 -0
  161. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_oauthmanager.py +0 -0
  162. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_oidc.py +0 -0
  163. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_permission.py +0 -0
  164. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_pfns.py +0 -0
  165. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_ping.py +0 -0
  166. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_policy_package.py +0 -0
  167. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_preparer.py +0 -0
  168. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_qos.py +0 -0
  169. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_quarantined_replica.py +0 -0
  170. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_reaper.py +0 -0
  171. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_redirect.py +0 -0
  172. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_replica.py +0 -0
  173. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_replica_recoverer.py +0 -0
  174. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_replica_sorting.py +0 -0
  175. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_request.py +0 -0
  176. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_root_proxy.py +0 -0
  177. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse.py +0 -0
  178. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_expression_parser.py +0 -0
  179. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_lfn2path.py +0 -0
  180. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_gfal2.py +0 -0
  181. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
  182. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_posix.py +0 -0
  183. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_rclone.py +0 -0
  184. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_rsync.py +0 -0
  185. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_srm.py +0 -0
  186. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_ssh.py +0 -0
  187. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_webdav.py +0 -0
  188. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_xrootd.py +0 -0
  189. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rse_selector.py +0 -0
  190. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rucio_server.py +0 -0
  191. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_rule.py +0 -0
  192. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_scope.py +0 -0
  193. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_subscription.py +0 -0
  194. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_tpc.py +0 -0
  195. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_trace.py +0 -0
  196. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_transfer.py +0 -0
  197. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_transfer_plugins.py +0 -0
  198. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_undertaker.py +0 -0
  199. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_upload.py +0 -0
  200. {rucio_clients-37.3.0 → rucio_clients-37.5.0}/tests/test_utils.py +0 -0
  201. {rucio_clients-37.3.0 → rucio_clients-37.5.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.3.0
3
+ Version: 37.5.0
4
4
  Summary: Rucio Client Lite Package
5
5
  Home-page: https://rucio.cern.ch/
6
6
  Author: Rucio
@@ -116,7 +116,6 @@ metrics_port = 8080
116
116
  [conveyor]
117
117
  scheme = srm,gsiftp,root,http,https
118
118
  transfertool = fts3
119
- ftshosts = https://fts3-pilot.cern.ch:8446, https://fts3-pilot.cern.ch:8446
120
119
  cacert = /opt/rucio/etc/web/ca.crt
121
120
  usercert = /opt/rucio/tools/x509up
122
121
 
@@ -27,7 +27,7 @@ def rule():
27
27
  @click.option("--copies", type=int, help="Number of copies", required=True)
28
28
  @click.option("--rses", "--rse-exp", help="Rule RSE expression", required=True)
29
29
  @click.option("--weight", help="RSE Weight")
30
- @click.option("--lifetime", type=str, help="Rule lifetime (in seconds). Use 'None' for no set lifetime")
30
+ @click.option("--lifetime", type=int, help="Rule lifetime (in seconds)")
31
31
  @click.option("--grouping", type=click.Choice(["DATASET", "ALL", "NONE"]), help="Rule grouping")
32
32
  @click.option("--locked", default=False, type=bool, is_flag=False, help="Rule locking")
33
33
  @click.option("--source-rses", help="RSE Expression for RSEs to be considered for source replicas")
@@ -35,12 +35,24 @@ class AccountClient(BaseClient):
35
35
  """
36
36
  Sends the request to create a new account.
37
37
 
38
- :param account: the name of the account.
39
- :param type_: The account type
40
- :param email: The Email address associated with the account.
38
+ Parameters
39
+ ----------
40
+ account :
41
+ The name of the account.
42
+ type_ :
43
+ The account type.
44
+ email :
45
+ The Email address associated with the account.
41
46
 
42
- :return: True if account was created successfully else False.
43
- :raises Duplicate: if account already exists.
47
+ Returns
48
+ -------
49
+
50
+ True if account was created successfully else False.
51
+
52
+ Raises
53
+ ------
54
+ Duplicate
55
+ If account already exists.
44
56
  """
45
57
 
46
58
  data = dumps({'type': type_, 'email': email})
@@ -55,11 +67,22 @@ class AccountClient(BaseClient):
55
67
 
56
68
  def delete_account(self, account: str) -> bool:
57
69
  """
58
- Sends the request to disable an account.
70
+ Send the request to disable an account.
71
+
72
+ Parameters
73
+ ----------
74
+ account :
75
+ The name of the account.
59
76
 
60
- :param account: the name of the account.
61
- :return: True is account was disabled successfully. False otherwise.
62
- :raises AccountNotFound: if account doesn't exist.
77
+ Returns
78
+ -------
79
+
80
+ True if account was disabled successfully. False otherwise.
81
+
82
+ Raises
83
+ ------
84
+ AccountNotFound
85
+ If account doesn't exist.
63
86
  """
64
87
 
65
88
  path = '/'.join([self.ACCOUNTS_BASEURL, account])
@@ -74,11 +97,22 @@ class AccountClient(BaseClient):
74
97
 
75
98
  def get_account(self, account: str) -> Optional[dict[str, Any]]:
76
99
  """
77
- Sends the request to get information about a given account.
100
+ Send the request to get information about a given account.
101
+
102
+ Parameters
103
+ ----------
104
+ account :
105
+ The name of the account.
78
106
 
79
- :param account: the name of the account.
80
- :return: a list of attributes for the account. None if failure.
81
- :raises AccountNotFound: if account doesn't exist.
107
+ Returns
108
+ -------
109
+
110
+ A dictionary of attributes for the account. None if failure.
111
+
112
+ Raises
113
+ ------
114
+ AccountNotFound
115
+ If account doesn't exist.
82
116
  """
83
117
 
84
118
  path = '/'.join([self.ACCOUNTS_BASEURL, account])
@@ -92,11 +126,27 @@ class AccountClient(BaseClient):
92
126
  raise exc_cls(exc_msg)
93
127
 
94
128
  def update_account(self, account: str, key: str, value: Any) -> bool:
95
- """ Update a property of an account.
129
+ """
130
+ Update a property of an account.
131
+
132
+ Parameters
133
+ ----------
134
+ account :
135
+ Name of the account.
136
+ key :
137
+ Account property like status.
138
+ value :
139
+ Property value.
140
+
141
+ Returns
142
+ -------
143
+
144
+ True if successful.
96
145
 
97
- :param account: Name of the account.
98
- :param key: Account property like status.
99
- :param value: Property value.
146
+ Raises
147
+ ------
148
+ Exception
149
+ If update fails.
100
150
  """
101
151
  data = dumps({key: value})
102
152
  path = '/'.join([self.ACCOUNTS_BASEURL, account])
@@ -117,14 +167,26 @@ class AccountClient(BaseClient):
117
167
  filters: Optional[dict[str, Any]] = None
118
168
  ) -> "Iterator[dict[str, Any]]":
119
169
  """
120
- Sends the request to list all rucio accounts.
170
+ Send the request to list all rucio accounts.
121
171
 
122
- :param type: The account type
123
- :param identity: The identity key name. For example x509 DN, or a username.
124
- :param filters: A dictionary key:account attribute to use for the filtering
172
+ Parameters
173
+ ----------
174
+ account_type :
175
+ The account type.
176
+ identity :
177
+ The identity key name. For example x509 DN, or a username.
178
+ filters :
179
+ A dictionary key:account attribute to use for the filtering.
125
180
 
126
- :return: a list containing account info dictionary for all rucio accounts.
127
- :raises AccountNotFound: if account doesn't exist.
181
+ Returns
182
+ -------
183
+
184
+ An iterator of dictionaries containing account information.
185
+
186
+ Raises
187
+ ------
188
+ AccountNotFound
189
+ If account doesn't exist.
128
190
  """
129
191
  path = '/'.join([self.ACCOUNTS_BASEURL])
130
192
  url = build_url(choice(self.list_hosts), path=path)
@@ -148,10 +210,17 @@ class AccountClient(BaseClient):
148
210
 
149
211
  def whoami(self) -> Optional[dict[str, Any]]:
150
212
  """
151
- Get information about account whose token is used
213
+ Get information about account whose token is used.
214
+
215
+ Returns
216
+ -------
152
217
 
153
- :return: a list of attributes for the account. None if failure.
154
- :raises AccountNotFound: if account doesn't exist.
218
+ A dictionary of attributes for the account. None if failure.
219
+
220
+ Raises
221
+ ------
222
+ AccountNotFound
223
+ If account doesn't exist.
155
224
  """
156
225
  return self.get_account('whoami')
157
226
 
@@ -165,14 +234,28 @@ class AccountClient(BaseClient):
165
234
  password: Optional[str] = None
166
235
  ) -> bool:
167
236
  """
168
- Adds a membership association between identity and account.
237
+ Add a membership association between identity and account.
238
+
239
+ Parameters
240
+ ----------
241
+ account :
242
+ The account name.
243
+ identity :
244
+ The identity key name. For example x509 DN, or a username.
245
+ authtype :
246
+ The type of the authentication (x509, gss, userpass).
247
+ email :
248
+ The Email address associated with the identity.
249
+ default :
250
+ If True, the account should be used by default with the provided identity.
251
+ password :
252
+ Password if authtype is userpass.
253
+
254
+ Returns
255
+ -------
256
+
257
+ True if successful.
169
258
 
170
- :param account: The account name.
171
- :param identity: The identity key name. For example x509 DN, or a username.
172
- :param authtype: The type of the authentication (x509, gss, userpass).
173
- :param default: If True, the account should be used by default with the provided identity.
174
- :param email: The Email address associated with the identity.
175
- :param password: Password if authtype is userpass.
176
259
  """
177
260
 
178
261
  data = dumps({'identity': identity, 'authtype': authtype, 'default': default, 'email': email, 'password': password})
@@ -197,9 +280,19 @@ class AccountClient(BaseClient):
197
280
  """
198
281
  Delete an identity's membership association with an account.
199
282
 
200
- :param account: The account name.
201
- :param identity: The identity key name. For example x509 DN, or a username.
202
- :param authtype: The type of the authentication (x509, gss, userpass).
283
+ Parameters
284
+ ----------
285
+ account :
286
+ The account name.
287
+ identity :
288
+ The identity key name. For example x509 DN, or a username.
289
+ authtype :
290
+ The type of the authentication (x509, gss, userpass).
291
+
292
+ Returns
293
+ -------
294
+
295
+ True if successful.
203
296
  """
204
297
 
205
298
  data = dumps({'identity': identity, 'authtype': authtype})
@@ -219,7 +312,10 @@ class AccountClient(BaseClient):
219
312
  """
220
313
  List all identities on an account.
221
314
 
222
- :param account: The account name.
315
+ Parameters
316
+ ----------
317
+ account :
318
+ The account name.
223
319
  """
224
320
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'identities'])
225
321
  url = build_url(choice(self.list_hosts), path=path)
@@ -235,7 +331,11 @@ class AccountClient(BaseClient):
235
331
  """
236
332
  List the associated rules of an account.
237
333
 
238
- :param account: The account name.
334
+ Parameters
335
+ ----------
336
+ account :
337
+ The account name.
338
+
239
339
  """
240
340
 
241
341
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'rules'])
@@ -251,9 +351,15 @@ class AccountClient(BaseClient):
251
351
  """
252
352
  Return the correct account limits for the given locality.
253
353
 
254
- :param account: The account name.
255
- :param rse_expression: Valid RSE expression
256
- :param locality: The scope of the account limit. 'local' or 'global'.
354
+ Parameters
355
+ ----------
356
+ account :
357
+ The account name.
358
+ rse_expression :
359
+ Valid RSE expression.
360
+ locality :
361
+ The scope of the account limit. 'local' or 'global'.
362
+
257
363
  """
258
364
 
259
365
  if locality == 'local':
@@ -268,8 +374,13 @@ class AccountClient(BaseClient):
268
374
  """
269
375
  List the account limit for the specific RSE expression.
270
376
 
271
- :param account: The account name.
272
- :param rse_expression: The rse expression.
377
+ Parameters
378
+ ----------
379
+ account :
380
+ The account name.
381
+ rse_expression :
382
+ The rse expression.
383
+
273
384
  """
274
385
 
275
386
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'limits', 'global', quote_plus(rse_expression)])
@@ -284,7 +395,10 @@ class AccountClient(BaseClient):
284
395
  """
285
396
  List all RSE expression limits of this account.
286
397
 
287
- :param account: The account name.
398
+ Parameters
399
+ ----------
400
+ account :
401
+ The account name.
288
402
  """
289
403
 
290
404
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'limits', 'global'])
@@ -299,7 +413,10 @@ class AccountClient(BaseClient):
299
413
  """
300
414
  List the account rse limits of this account.
301
415
 
302
- :param account: The account name.
416
+ Parameters
417
+ ----------
418
+ account :
419
+ The account name.
303
420
  """
304
421
 
305
422
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'limits', 'local'])
@@ -314,8 +431,12 @@ class AccountClient(BaseClient):
314
431
  """
315
432
  List the account rse limits of this account for the specific rse.
316
433
 
317
- :param account: The account name.
318
- :param rse: The rse name.
434
+ Parameters
435
+ ----------
436
+ account :
437
+ The account name.
438
+ rse :
439
+ The rse name.
319
440
  """
320
441
 
321
442
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'limits', 'local', rse])
@@ -330,8 +451,12 @@ class AccountClient(BaseClient):
330
451
  """
331
452
  List the account usage for one or all rses of this account.
332
453
 
333
- :param account: The account name.
334
- :param rse: The rse name.
454
+ Parameters
455
+ ----------
456
+ account :
457
+ The account name.
458
+ rse :
459
+ The rse name.
335
460
  """
336
461
  if rse:
337
462
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'usage', 'local', rse])
@@ -349,8 +474,12 @@ class AccountClient(BaseClient):
349
474
  """
350
475
  List the account usage for one or all RSE expressions of this account.
351
476
 
352
- :param account: The account name.
353
- :param rse_expression: The rse expression.
477
+ Parameters
478
+ ----------
479
+ account :
480
+ The account name.
481
+ rse_expression :
482
+ The rse expression.
354
483
  """
355
484
  if rse_expression:
356
485
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'usage', 'global', quote_plus(rse_expression)])
@@ -368,8 +497,12 @@ class AccountClient(BaseClient):
368
497
  """
369
498
  List the account usage history of this account on rse.
370
499
 
371
- :param account: The account name.
372
- :param rse: The rse name.
500
+ Parameters
501
+ ----------
502
+ account :
503
+ The account name.
504
+ rse :
505
+ The rse name.
373
506
  """
374
507
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'usage/history', rse])
375
508
  url = build_url(choice(self.list_hosts), path=path)
@@ -384,7 +517,10 @@ class AccountClient(BaseClient):
384
517
  """
385
518
  List the attributes for an account.
386
519
 
387
- :param account: The account name.
520
+ Parameters
521
+ ----------
522
+ account :
523
+ The account name.
388
524
  """
389
525
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'attr/'])
390
526
  url = build_url(choice(self.list_hosts), path=path)
@@ -397,11 +533,16 @@ class AccountClient(BaseClient):
397
533
 
398
534
  def add_account_attribute(self, account: str, key: str, value: Any) -> bool:
399
535
  """
400
- Adds an attribute to an account.
536
+ Add an attribute to an account.
401
537
 
402
- :param account: The account name.
403
- :param key: The attribute key.
404
- :param value: The attribute value.
538
+ Parameters
539
+ ----------
540
+ account :
541
+ The account name.
542
+ key :
543
+ The attribute key.
544
+ value :
545
+ The attribute value.
405
546
  """
406
547
 
407
548
  data = dumps({'key': key, 'value': value})
@@ -418,8 +559,12 @@ class AccountClient(BaseClient):
418
559
  """
419
560
  Delete an attribute for an account.
420
561
 
421
- :param account: The account name.
422
- :param key: The attribute key.
562
+ Parameters
563
+ ----------
564
+ account :
565
+ The account name.
566
+ key :
567
+ The attribute key.
423
568
  """
424
569
 
425
570
  path = '/'.join([self.ACCOUNTS_BASEURL, account, 'attr', key])
@@ -38,11 +38,21 @@ class AccountLimitClient(BaseClient):
38
38
  """
39
39
  Sets an account limit for a given limit scope.
40
40
 
41
- :param account: The name of the account.
42
- :param rse: The rse name.
43
- :param bytes_: An integer with the limit in bytes.
44
- :param locality: The scope of the account limit. 'local' or 'global'.
45
- :return: True if quota was created successfully else False.
41
+ Parameters
42
+ ----------
43
+ account :
44
+ The name of the account.
45
+ rse :
46
+ The rse name.
47
+ bytes_ :
48
+ The limit in bytes.
49
+ locality :
50
+ The scope of the account limit.
51
+
52
+ Returns
53
+ -------
54
+
55
+ True if quota was created successfully, False otherwise.
46
56
  """
47
57
 
48
58
  if locality == 'local':
@@ -62,10 +72,19 @@ class AccountLimitClient(BaseClient):
62
72
  """
63
73
  Deletes an account limit for a given limit scope.
64
74
 
65
- :param account: The name of the account.
66
- :param rse: The rse name.
67
- :param locality: The scope of the account limit. 'local' or 'global'.
68
- :return: True if quota was created successfully else False.
75
+ Parameters
76
+ ----------
77
+ account :
78
+ The name of the account.
79
+ rse :
80
+ The rse name.
81
+ locality :
82
+ The scope of the account limit.
83
+
84
+ Returns
85
+ -------
86
+
87
+ True if quota was deleted successfully, False otherwise.
69
88
  """
70
89
 
71
90
  if locality == 'local':
@@ -85,10 +104,19 @@ class AccountLimitClient(BaseClient):
85
104
  """
86
105
  Sends the request to set an account limit for an account.
87
106
 
88
- :param account: The name of the account.
89
- :param rse: The rse name.
90
- :param bytes_: An integer with the limit in bytes.
91
- :return: True if quota was created successfully else False.
107
+ Parameters
108
+ ----------
109
+ account :
110
+ The name of the account.
111
+ rse :
112
+ The rse name.
113
+ bytes_ :
114
+ The limit in bytes.
115
+
116
+ Returns
117
+ -------
118
+
119
+ True if quota was created successfully, False otherwise.
92
120
  """
93
121
 
94
122
  data = dumps({'bytes': bytes_})
@@ -111,11 +139,22 @@ class AccountLimitClient(BaseClient):
111
139
  """
112
140
  Sends the request to remove an account limit.
113
141
 
114
- :param account: The name of the account.
115
- :param rse: The rse name.
142
+ Parameters
143
+ ----------
144
+ account :
145
+ The name of the account.
146
+ rse :
147
+ The rse name.
148
+
149
+ Returns
150
+ -------
116
151
 
117
- :return: True if quota was removed successfully. False otherwise.
118
- :raises AccountNotFound: if account doesn't exist.
152
+ True if quota was removed successfully, False otherwise.
153
+
154
+ Raises
155
+ ------
156
+ AccountNotFound
157
+ If account doesn't exist.
119
158
  """
120
159
 
121
160
  path = '/'.join([self.ACCOUNTLIMIT_BASEURL, 'local', account, rse])
@@ -138,10 +177,19 @@ class AccountLimitClient(BaseClient):
138
177
  """
139
178
  Sends the request to set a global account limit for an account.
140
179
 
141
- :param account: The name of the account.
142
- :param rse_expression: The rse expression.
143
- :param bytes_: An integer with the limit in bytes.
144
- :return: True if quota was created successfully else False.
180
+ Parameters
181
+ ----------
182
+ account :
183
+ The name of the account.
184
+ rse_expression :
185
+ The rse expression.
186
+ bytes_ :
187
+ The limit in bytes.
188
+
189
+ Returns
190
+ -------
191
+
192
+ True if quota was created successfully, False otherwise.
145
193
  """
146
194
 
147
195
  data = dumps({'bytes': bytes_})
@@ -164,11 +212,22 @@ class AccountLimitClient(BaseClient):
164
212
  """
165
213
  Sends the request to remove a global account limit.
166
214
 
167
- :param account: The name of the account.
168
- :param rse_expression: The rse expression.
215
+ Parameters
216
+ ----------
217
+ account :
218
+ The name of the account.
219
+ rse_expression :
220
+ The rse expression.
221
+
222
+ Returns
223
+ -------
224
+
225
+ True if quota was removed successfully, False otherwise.
169
226
 
170
- :return: True if quota was removed successfully. False otherwise.
171
- :raises AccountNotFound: if account doesn't exist.
227
+ Raises
228
+ ------
229
+ AccountNotFound
230
+ If account doesn't exist.
172
231
  """
173
232
 
174
233
  path = '/'.join([self.ACCOUNTLIMIT_BASEURL, 'global', account, quote_plus(rse_expression)])