rucio-clients 35.0.0rc2__tar.gz → 35.1.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 (189) hide show
  1. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/PKG-INFO +2 -1
  2. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/bin/rucio-admin +3 -1
  3. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/lockclient.py +2 -2
  4. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/uploadclient.py +7 -10
  5. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/types.py +4 -1
  6. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/utils.py +4 -2
  7. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/protocol.py +23 -6
  8. rucio_clients-35.1.0/lib/rucio/vcsversion.py +11 -0
  9. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/requirements/requirements.client.txt +2 -2
  10. rucio_clients-35.0.0rc2/lib/rucio/vcsversion.py +0 -11
  11. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/AUTHORS.rst +0 -0
  12. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/ChangeLog +0 -0
  13. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/LICENSE +0 -0
  14. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/MANIFEST.in +0 -0
  15. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/README.md +0 -0
  16. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/bin/rucio +0 -0
  17. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/etc/rse-accounts.cfg.template +0 -0
  18. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/etc/rucio.cfg.atlas.client.template +0 -0
  19. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/etc/rucio.cfg.template +0 -0
  20. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/__init__.py +0 -0
  21. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/alembicrevision.py +0 -0
  22. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/__init__.py +0 -0
  23. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/accountclient.py +0 -0
  24. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/accountlimitclient.py +0 -0
  25. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/baseclient.py +0 -0
  26. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/client.py +0 -0
  27. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/configclient.py +0 -0
  28. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/credentialclient.py +0 -0
  29. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/didclient.py +0 -0
  30. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/diracclient.py +0 -0
  31. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/downloadclient.py +0 -0
  32. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/exportclient.py +0 -0
  33. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/fileclient.py +0 -0
  34. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/importclient.py +0 -0
  35. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/lifetimeclient.py +0 -0
  36. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/metaconventionsclient.py +0 -0
  37. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/pingclient.py +0 -0
  38. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/replicaclient.py +0 -0
  39. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/requestclient.py +0 -0
  40. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/rseclient.py +0 -0
  41. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/ruleclient.py +0 -0
  42. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/scopeclient.py +0 -0
  43. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/subscriptionclient.py +0 -0
  44. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/touchclient.py +0 -0
  45. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/__init__.py +0 -0
  46. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/cache.py +0 -0
  47. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/config.py +0 -0
  48. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/constants.py +0 -0
  49. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/constraints.py +0 -0
  50. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/didtype.py +0 -0
  51. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/exception.py +0 -0
  52. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/extra.py +0 -0
  53. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/logging.py +0 -0
  54. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/pcache.py +0 -0
  55. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/plugins.py +0 -0
  56. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/policy.py +0 -0
  57. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/__init__.py +0 -0
  58. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/atlas.py +0 -0
  59. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/belleii.py +0 -0
  60. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/domatpc.py +0 -0
  61. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/escape.py +0 -0
  62. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/generic.py +0 -0
  63. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
  64. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/icecube.py +0 -0
  65. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/stomp_utils.py +0 -0
  66. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/stopwatch.py +0 -0
  67. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/test_rucio_server.py +0 -0
  68. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/__init__.py +0 -0
  69. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/__init__.py +0 -0
  70. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
  71. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/cache.py +0 -0
  72. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/dummy.py +0 -0
  73. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/gfal.py +0 -0
  74. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/globus.py +0 -0
  75. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/gsiftp.py +0 -0
  76. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
  77. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/mock.py +0 -0
  78. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/ngarc.py +0 -0
  79. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/posix.py +0 -0
  80. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/rclone.py +0 -0
  81. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/rfio.py +0 -0
  82. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/srm.py +0 -0
  83. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/ssh.py +0 -0
  84. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/storm.py +0 -0
  85. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/webdav.py +0 -0
  86. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
  87. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/rsemanager.py +0 -0
  88. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/version.py +0 -0
  89. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio_clients.egg-info/SOURCES.txt +0 -0
  90. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/pylintrc +0 -0
  91. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/pyproject.toml +0 -0
  92. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/setup.cfg +0 -0
  93. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/setup.py +0 -0
  94. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/setuputil.py +0 -0
  95. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_abacus_account.py +0 -0
  96. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_abacus_collection_replica.py +0 -0
  97. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_abacus_rse.py +0 -0
  98. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_account.py +0 -0
  99. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_account_limits.py +0 -0
  100. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_archive.py +0 -0
  101. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_auditor.py +0 -0
  102. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_auditor_hdfs.py +0 -0
  103. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_auditor_srmdumps.py +0 -0
  104. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_authentication.py +0 -0
  105. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_automatix.py +0 -0
  106. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_bad_replica.py +0 -0
  107. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_bb8.py +0 -0
  108. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_belleii.py +0 -0
  109. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_bin_rucio.py +0 -0
  110. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_boolean.py +0 -0
  111. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_clients.py +0 -0
  112. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_common_types.py +0 -0
  113. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_config.py +0 -0
  114. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_conveyor.py +0 -0
  115. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_conveyor_submitter.py +0 -0
  116. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_counter.py +0 -0
  117. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_credential.py +0 -0
  118. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_curl.py +0 -0
  119. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_daemons.py +0 -0
  120. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dataset_replicas.py +0 -0
  121. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_db.py +0 -0
  122. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_did.py +0 -0
  123. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_did_meta_plugins.py +0 -0
  124. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_didtype.py +0 -0
  125. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_download.py +0 -0
  126. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dumper.py +0 -0
  127. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dumper_consistency.py +0 -0
  128. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dumper_data_model.py +0 -0
  129. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dumper_path_parsing.py +0 -0
  130. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_filter_engine.py +0 -0
  131. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_gateway_external_representation.py +0 -0
  132. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_heartbeat.py +0 -0
  133. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_hermes.py +0 -0
  134. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_identity.py +0 -0
  135. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_impl_upload_download.py +0 -0
  136. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_import_export.py +0 -0
  137. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_judge_cleaner.py +0 -0
  138. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_judge_evaluator.py +0 -0
  139. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_judge_injector.py +0 -0
  140. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_judge_repairer.py +0 -0
  141. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_lifetime.py +0 -0
  142. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_message.py +0 -0
  143. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_meta_conventions.py +0 -0
  144. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_meta_did.py +0 -0
  145. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_module_import.py +0 -0
  146. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_monitor.py +0 -0
  147. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_multi_vo.py +0 -0
  148. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_naming_convention.py +0 -0
  149. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_oauthmanager.py +0 -0
  150. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_oidc.py +0 -0
  151. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_permission.py +0 -0
  152. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_pfns.py +0 -0
  153. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_ping.py +0 -0
  154. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_preparer.py +0 -0
  155. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_qos.py +0 -0
  156. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_quarantined_replica.py +0 -0
  157. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_reaper.py +0 -0
  158. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_redirect.py +0 -0
  159. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_replica.py +0 -0
  160. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_replica_recoverer.py +0 -0
  161. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_replica_sorting.py +0 -0
  162. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_request.py +0 -0
  163. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_root_proxy.py +0 -0
  164. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse.py +0 -0
  165. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_expression_parser.py +0 -0
  166. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_lfn2path.py +0 -0
  167. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_gfal2.py +0 -0
  168. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
  169. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_posix.py +0 -0
  170. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_rclone.py +0 -0
  171. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_rsync.py +0 -0
  172. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_srm.py +0 -0
  173. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_ssh.py +0 -0
  174. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_webdav.py +0 -0
  175. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_xrootd.py +0 -0
  176. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_selector.py +0 -0
  177. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rucio_server.py +0 -0
  178. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rule.py +0 -0
  179. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_scope.py +0 -0
  180. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_subscription.py +0 -0
  181. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_throttler.py +0 -0
  182. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_tpc.py +0 -0
  183. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_trace.py +0 -0
  184. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_transfer.py +0 -0
  185. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_transfer_plugins.py +0 -0
  186. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_undertaker.py +0 -0
  187. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_upload.py +0 -0
  188. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_utils.py +0 -0
  189. {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tools/merge_rucio_configs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rucio-clients
3
- Version: 35.0.0rc2
3
+ Version: 35.1.0
4
4
  Summary: Rucio Client Lite Package
5
5
  Home-page: https://rucio.cern.ch/
6
6
  Author: Rucio
@@ -21,6 +21,7 @@ License-File: LICENSE
21
21
  License-File: AUTHORS.rst
22
22
  Requires-Dist: requests>=2.32.2
23
23
  Requires-Dist: urllib3>=1.26.18
24
+ Requires-Dist: dogpile-cache>=1.2.2
24
25
  Requires-Dist: tabulate>=0.9.0
25
26
  Requires-Dist: jsonschema>=4.20.0
26
27
  Provides-Extra: ssh
@@ -1196,7 +1196,9 @@ def declare_temporary_unavailable_replicas(args):
1196
1196
  else:
1197
1197
  bad_files = args.listbadfiles
1198
1198
 
1199
- assert args.duration is not None, "Duration should have been set, something went wrong!"
1199
+ if args.duration is None:
1200
+ raise ValueError("Duration should have been set, something went wrong!")
1201
+
1200
1202
  expiration_date = (datetime.datetime.utcnow() + datetime.timedelta(seconds=args.duration)).isoformat()
1201
1203
 
1202
1204
  chunk_size = 10000
@@ -69,8 +69,8 @@ class LockClient(BaseClient):
69
69
  """
70
70
 
71
71
  # convert did list to list of dictionaries
72
-
73
- assert all(did.get("type", "dataset") in ("dataset", "container") for did in dids), "did type can be either 'container' or 'dataset'"
72
+ if not all(did.get("type", "dataset") in ("dataset", "container") for did in dids):
73
+ raise ValueError("DID type can be either 'container' or 'dataset'")
74
74
 
75
75
  path = '/'.join([self.LOCKS_BASEURL, "bulk_locks_for_dids"])
76
76
  url = build_url(choice(self.list_hosts), path=path)
@@ -48,7 +48,7 @@ from rucio.rse import rsemanager as rsemgr
48
48
  if TYPE_CHECKING:
49
49
  from collections.abc import Iterable, Mapping
50
50
 
51
- from rucio.common.types import AttachDict, DatasetDict, DIDStringDict, FileToUploadDict, FileToUploadWithCollectedAndDatasetInfoDict, FileToUploadWithCollectedInfoDict, LoggerFunction, RSESettingsDict, TraceBaseDict, TraceDict
51
+ from rucio.common.types import AttachDict, DatasetDict, DIDStringDict, FileToUploadDict, FileToUploadWithCollectedAndDatasetInfoDict, FileToUploadWithCollectedInfoDict, LoggerFunction, PathTypeAlias, RSESettingsDict, TraceBaseDict, TraceDict
52
52
  from rucio.rse.protocols.protocol import RSEProtocol
53
53
 
54
54
 
@@ -372,10 +372,7 @@ class UploadClient:
372
372
  raise NotAllFilesUploaded()
373
373
  return 0
374
374
 
375
- def _add_bittorrent_meta(self, file: "Mapping[str, Any]", logger: "LoggerFunction") -> None:
376
- if not config_get_bool('client', 'register_bittorrent_meta', default=False):
377
- return
378
-
375
+ def _add_bittorrent_meta(self, file: "Mapping[str, Any]") -> None:
379
376
  pieces_root, pieces_layers, piece_length = bittorrent_v2_merkle_sha256(os.path.join(file['dirname'], file['basename']))
380
377
  bittorrent_meta = {
381
378
  'bittorrent_pieces_root': base64.b64encode(pieces_root).decode(),
@@ -383,6 +380,7 @@ class UploadClient:
383
380
  'bittorrent_piece_length': piece_length,
384
381
  }
385
382
  self.client.set_metadata_bulk(scope=file['did_scope'], name=file['did_name'], meta=bittorrent_meta)
383
+ self.logger(logging.INFO, f"Added bittorrent metadata to file DID {file['did_scope']}:{file['did_name']}")
386
384
 
387
385
  def _register_file(
388
386
  self,
@@ -434,7 +432,6 @@ class UploadClient:
434
432
  logger(logging.INFO, 'Successfully created dataset %s' % dataset_did_str)
435
433
  except DataIdentifierAlreadyExists:
436
434
  logger(logging.INFO, 'Dataset %s already exists - no rule will be created' % dataset_did_str)
437
-
438
435
  if file.get('lifetime') is not None:
439
436
  raise InputValidationError('Dataset %s exists and lifetime %s given. Prohibited to modify parent dataset lifetime.' % (dataset_did_str,
440
437
  file.get('lifetime')))
@@ -453,7 +450,6 @@ class UploadClient:
453
450
 
454
451
  if str(meta['adler32']).lstrip('0') != str(file['adler32']).lstrip('0'):
455
452
  logger(logging.ERROR, 'Local checksum %s does not match remote checksum %s' % (file['adler32'], meta['adler32']))
456
-
457
453
  raise DataIdentifierAlreadyExists
458
454
 
459
455
  # add file to rse if it is not registered yet
@@ -464,7 +460,8 @@ class UploadClient:
464
460
  except DataIdentifierNotFound:
465
461
  logger(logging.DEBUG, 'File DID does not exist')
466
462
  self.client.add_replicas(rse=rse, files=[replica_for_api])
467
- self._add_bittorrent_meta(file=file, logger=logger)
463
+ if config_get_bool('client', 'register_bittorrent_meta', default=False):
464
+ self._add_bittorrent_meta(file=file)
468
465
  logger(logging.INFO, 'Successfully added replica in Rucio catalogue at %s' % rse)
469
466
  if not dataset_did_str:
470
467
  # only need to add rules for files if no dataset is given
@@ -499,7 +496,7 @@ class UploadClient:
499
496
 
500
497
  def _collect_file_info(
501
498
  self,
502
- filepath: str,
499
+ filepath: "PathTypeAlias",
503
500
  item: "FileToUploadDict"
504
501
  ) -> "FileToUploadWithCollectedInfoDict":
505
502
  """
@@ -845,7 +842,7 @@ class UploadClient:
845
842
  scope = self.default_file_scope
846
843
  rse = item.get('rse')
847
844
  path = item.get('path')
848
- if path:
845
+ if path and isinstance(path, str):
849
846
  if path[-1] == '/':
850
847
  path = path[0:-1]
851
848
  i = 0
@@ -15,11 +15,14 @@
15
15
  import sys
16
16
  from collections.abc import Callable
17
17
  from datetime import datetime
18
+ from os import PathLike
18
19
 
19
20
  if sys.version_info < (3, 11):
20
21
  from typing_extensions import TYPE_CHECKING, Any, Literal, NotRequired, Optional, TypedDict, Union # noqa: UP035
22
+ PathTypeAlias = Union[PathLike, str]
21
23
  else:
22
24
  from typing import TYPE_CHECKING, Any, Literal, NotRequired, Optional, TypedDict, Union
25
+ PathTypeAlias = PathLike
23
26
 
24
27
 
25
28
  if TYPE_CHECKING:
@@ -306,7 +309,7 @@ class TraceDict(TraceBaseDict):
306
309
 
307
310
 
308
311
  class FileToUploadDict(TypedDict):
309
- path: str
312
+ path: PathTypeAlias
310
313
  rse: str
311
314
  did_scope: str
312
315
  did_name: str
@@ -1941,7 +1941,8 @@ class StoreAndDeprecateWarningAction(argparse.Action):
1941
1941
  option_strings=option_strings,
1942
1942
  dest=dest,
1943
1943
  **kwargs)
1944
- assert new_option_string in option_strings
1944
+ if new_option_string not in option_strings:
1945
+ raise ValueError("%s not supported as a string option." % new_option_string)
1945
1946
  self.new_option_string = new_option_string
1946
1947
 
1947
1948
  def __call__(self, parser, namespace, values, option_string: Optional[str] = None):
@@ -1979,7 +1980,8 @@ class StoreTrueAndDeprecateWarningAction(argparse._StoreConstAction):
1979
1980
  default=default,
1980
1981
  required=required,
1981
1982
  help=help)
1982
- assert new_option_string in option_strings
1983
+ if new_option_string not in option_strings:
1984
+ raise ValueError("%s not supported as a string option." % new_option_string)
1983
1985
  self.new_option_string = new_option_string
1984
1986
 
1985
1987
  def __call__(self, parser, namespace, values, option_string: Optional[str] = None):
@@ -20,7 +20,7 @@ import hashlib
20
20
  import logging
21
21
  from collections.abc import Callable, Mapping
22
22
  from configparser import NoOptionError, NoSectionError
23
- from typing import TypeVar
23
+ from typing import Any, TypeVar
24
24
  from urllib.parse import urlparse
25
25
 
26
26
  from rucio.common import config, exception
@@ -41,16 +41,33 @@ class RSEDeterministicScopeTranslation(PolicyPackageAlgorithms):
41
41
  """
42
42
  Translates a pfn dictionary into a scope and name
43
43
  """
44
+
45
+ _algorithm_type = "pfn2lfn"
46
+
44
47
  def __init__(self, vo: str = 'def'):
45
48
  super().__init__()
46
49
  self.register("def", RSEDeterministicScopeTranslation._default)
47
50
  self.register("atlas", RSEDeterministicScopeTranslation._atlas)
48
51
  policy_module = vo
49
- # Uses the same policy as the DeterministicTranslation
50
- if super()._supports(self.__class__.__name__, policy_module):
51
- self.parser = self._get_one_algorithm(self.__class__.__name__, policy_module)
52
- else:
53
- self.parser = self._get_one_algorithm(self.__class__.__name__, "def")
52
+ logger = logging.getLogger(__name__)
53
+ try:
54
+ # Use the function defined in the policy package if it's configured so
55
+ algo_type = self._algorithm_type
56
+ algorithm_name = config.config_get('policy', self._algorithm_type)
57
+ except (NoOptionError, NoSectionError, RuntimeError):
58
+ # Don't use a function from the policy package. Use one defined in this class according to vo
59
+ logger.debug("PFN2LFN function will not be fetched from the policy package")
60
+ algo_type = self.__class__.__name__
61
+ if super()._supports(algo_type, policy_module):
62
+ algorithm_name = policy_module
63
+ else:
64
+ algorithm_name = "def"
65
+
66
+ self.parser = self.get_parser(algo_type, algorithm_name)
67
+
68
+ @classmethod
69
+ def get_parser(cls, algorithm_type: str, algorithm_name: str) -> Callable[..., Any]:
70
+ return super()._get_one_algorithm(algorithm_type, algorithm_name)
54
71
 
55
72
  @classmethod
56
73
  def register(cls, name: str, func: Callable) -> None:
@@ -0,0 +1,11 @@
1
+
2
+ '''
3
+ This file is automatically generated; Do not edit it. :)
4
+ '''
5
+ VERSION_INFO = {
6
+ 'final': True,
7
+ 'version': '35.1.0',
8
+ 'branch_nick': 'release-35-LTS',
9
+ 'revision_id': '7b5902dae33b6e94f6fc07fd4292e5362b3fd2f6',
10
+ 'revno': 13114
11
+ }
@@ -1,7 +1,7 @@
1
1
  # All dependencies needed to run rucio client should be defined here
2
2
  requests>=2.32.2 # Python HTTP for Humans.
3
3
  urllib3>=1.26.18 # HTTP library with thread-safe connection pooling, file post, etc.
4
- dogpile.cache>=1.2.2 # Caching API plugins (1.1.2 is the first version to support pymemcache)
4
+ dogpile-cache>=1.2.2 # Caching API plugins (1.1.2 is the first version to support pymemcache)
5
5
  tabulate>=0.9.0 # Pretty-print tabular data
6
6
  jsonschema>=4.20.0 # For JSON schema validation (Policy modules)
7
7
 
@@ -12,4 +12,4 @@ pykerberos>=1.2.4 # kerberos_extras fo
12
12
  requests-kerberos>=0.14.0 # kerberos_extras for client and server
13
13
  python-swiftclient>=4.4.0 # swift_extras
14
14
  argcomplete>=3.1.6 # argcomplete_extras; Bash tab completion for argparse
15
- python-magic>=0.4.27 # dumper_extras; File type identification using libmagic
15
+ python-magic>=0.4.27 # dumper_extras; File type identification using libmagic
@@ -1,11 +0,0 @@
1
-
2
- '''
3
- This file is automatically generated; Do not edit it. :)
4
- '''
5
- VERSION_INFO = {
6
- 'final': True,
7
- 'version': '35.0.0rc2',
8
- 'branch_nick': 'master',
9
- 'revision_id': 'fb2b459a73eafe428a69b8a4a5ab418af859d0bb',
10
- 'revno': 13074
11
- }