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.
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/PKG-INFO +2 -1
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/bin/rucio-admin +3 -1
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/lockclient.py +2 -2
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/uploadclient.py +7 -10
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/types.py +4 -1
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/utils.py +4 -2
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/protocol.py +23 -6
- rucio_clients-35.1.0/lib/rucio/vcsversion.py +11 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/requirements/requirements.client.txt +2 -2
- rucio_clients-35.0.0rc2/lib/rucio/vcsversion.py +0 -11
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/AUTHORS.rst +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/ChangeLog +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/LICENSE +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/MANIFEST.in +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/README.md +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/bin/rucio +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/etc/rse-accounts.cfg.template +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/etc/rucio.cfg.template +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/__init__.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/alembicrevision.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/__init__.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/accountclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/accountlimitclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/baseclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/client.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/configclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/credentialclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/didclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/diracclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/downloadclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/exportclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/fileclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/importclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/lifetimeclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/metaconventionsclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/pingclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/replicaclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/requestclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/rseclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/ruleclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/scopeclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/subscriptionclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/client/touchclient.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/__init__.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/cache.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/config.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/constants.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/constraints.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/didtype.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/exception.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/extra.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/logging.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/pcache.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/plugins.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/policy.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/__init__.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/atlas.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/belleii.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/domatpc.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/escape.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/generic.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/icecube.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/stomp_utils.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/stopwatch.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/test_rucio_server.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/__init__.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/__init__.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/cache.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/dummy.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/gfal.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/globus.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/gsiftp.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/mock.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/ngarc.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/posix.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/rclone.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/rfio.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/srm.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/ssh.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/storm.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/webdav.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/rse/rsemanager.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/version.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio_clients.egg-info/SOURCES.txt +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/pylintrc +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/pyproject.toml +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/setup.cfg +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/setup.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/setuputil.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_abacus_account.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_abacus_collection_replica.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_abacus_rse.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_account.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_account_limits.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_archive.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_auditor.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_auditor_hdfs.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_auditor_srmdumps.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_authentication.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_automatix.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_bad_replica.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_bb8.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_belleii.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_bin_rucio.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_boolean.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_clients.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_common_types.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_config.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_conveyor.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_conveyor_submitter.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_counter.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_credential.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_curl.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_daemons.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dataset_replicas.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_db.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_did.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_did_meta_plugins.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_didtype.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_download.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dumper.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dumper_consistency.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dumper_data_model.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_dumper_path_parsing.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_filter_engine.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_gateway_external_representation.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_heartbeat.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_hermes.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_identity.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_impl_upload_download.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_import_export.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_judge_cleaner.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_judge_evaluator.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_judge_injector.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_judge_repairer.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_lifetime.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_message.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_meta_conventions.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_meta_did.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_module_import.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_monitor.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_multi_vo.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_naming_convention.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_oauthmanager.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_oidc.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_permission.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_pfns.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_ping.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_preparer.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_qos.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_quarantined_replica.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_reaper.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_redirect.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_replica.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_replica_recoverer.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_replica_sorting.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_request.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_root_proxy.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_expression_parser.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_lfn2path.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_gfal2.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_posix.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_rclone.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_rsync.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_srm.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_ssh.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_webdav.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_protocol_xrootd.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rse_selector.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rucio_server.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_rule.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_scope.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_subscription.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_throttler.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_tpc.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_trace.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_transfer.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_transfer_plugins.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_undertaker.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_upload.py +0 -0
- {rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_utils.py +0 -0
- {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
|
|
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
|
-
|
|
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
|
-
|
|
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]"
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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:
|
|
@@ -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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/lib/rucio/common/schema/generic_multi_vo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rucio_clients-35.0.0rc2 → rucio_clients-35.1.0}/tests/test_gateway_external_representation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|