{"id":23515,"library":"datarobot-storage","title":"DataRobot Storage","description":"A library providing reusable storage access (S3, GCS, Azure Blob, local filesystem) for DataRobot. Current version 2.2.0, compatible with Python >=3.9, <4.0. Released under the MIT license with quarterly updates.","status":"active","version":"2.2.0","language":"python","source_language":"en","source_url":"https://github.com/datarobot/datarobot-storage","tags":["storage","data-robot","s3","gcs","azure","filesystem"],"install":[{"cmd":"pip install datarobot-storage","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"S3 storage backend","package":"boto3","optional":true},{"reason":"GCS storage backend","package":"google-cloud-storage","optional":true},{"reason":"Azure Blob storage backend","package":"azure-storage-blob","optional":true}],"imports":[{"note":"Legacy package used old dotted path; renamed to underscore in v2","wrong":"from datarobot.storage import Storage","symbol":"Storage","correct":"from datarobot_storage import Storage"},{"note":"Backends are submodules, not top-level","wrong":"from datarobot_storage import S3Backend","symbol":"S3Backend","correct":"from datarobot_storage.backends import S3Backend"}],"quickstart":{"code":"from datarobot_storage import Storage\nfrom datarobot_storage.backends import S3Backend\n\nbackend = S3Backend(\n    bucket='my-bucket',\n    aws_access_key_id=os.environ.get('AWS_ACCESS_KEY_ID', ''),\n    aws_secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY', '')\n)\nstorage = Storage(backend)\nstorage.upload('local/path.txt', 'remote/path.txt')","lang":"python","description":"Initialize an S3-backed storage and upload a file."},"warnings":[{"fix":"Update imports: replace datarobot.storage with datarobot_storage.","message":"v2.0.0 renamed the main package from datarobot.storage to datarobot_storage. All imports must use underscores.","severity":"breaking","affected_versions":"<2.0.0"},{"fix":"Instantiate a backend explicitly (e.g., S3Backend(...)) and pass to Storage.","message":"Storage constructor now requires a backend object instead of a dict configuration.","severity":"breaking","affected_versions":"<2.0.0"},{"fix":"Pass aws_access_key_id and aws_secret_access_key explicitly, or configure boto3 default session.","message":"Environment variables for credentials are not automatically picked up; you must pass them explicitly unless using an IAM role or service account.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use from datarobot_storage import Storage instead of from datarobot.storage import Storage.","cause":"Using the old dotted import path (pre-v2.0.0).","error":"ImportError: No module named datarobot.storage"},{"fix":"Provide a backend object: Storage(backend).","cause":"Calling Storage() without a backend argument (v2+).","error":"TypeError: Storage() takes at least 1 argument (0 given)"},{"fix":"Use a proper backend class: Storage(S3Backend(...)).","cause":"Passing a dict or string instead of a backend instance.","error":"datarobot_storage.exceptions.InvalidBackendError: The backend must be an instance of BaseBackend"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}