Title: Blob upload_from_string AttributeError when using client argument · Issue #286 · googleapis/python-storage · GitHub
Open Graph Title: Blob upload_from_string AttributeError when using client argument · Issue #286 · googleapis/python-storage
X Title: Blob upload_from_string AttributeError when using client argument · Issue #286 · googleapis/python-storage
Description: Environment details OS type and version: variant of Debian Linux Python version: 3.8.5 pip version: 20.1.1 google-cloud-storage version: 1.31.2 Steps to reproduce create Blob object using from_string without a specified client use Blob u...
Open Graph Description: Environment details OS type and version: variant of Debian Linux Python version: 3.8.5 pip version: 20.1.1 google-cloud-storage version: 1.31.2 Steps to reproduce create Blob object using from_stri...
X Description: Environment details OS type and version: variant of Debian Linux Python version: 3.8.5 pip version: 20.1.1 google-cloud-storage version: 1.31.2 Steps to reproduce create Blob object using from_stri...
Opengraph URL: https://github.com/googleapis/python-storage/issues/286
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Blob upload_from_string AttributeError when using client argument","articleBody":"#### Environment details\r\n\r\n - OS type and version: variant of Debian Linux\r\n - Python version: 3.8.5\r\n - pip version: 20.1.1\r\n - `google-cloud-storage` version: 1.31.2\r\n\r\n#### Steps to reproduce\r\n\r\n 1. create `Blob` object using `from_string` without a specified `client`\r\n 2. use `Blob` `upload_from_string` with `client` argument\r\n\r\n#### Code example\r\n\r\n```python\r\nfrom google.cloud import storage\r\nfrom google.cloud.storage.blob import Blob \r\n\r\ndef reproduce_error():\r\n storage_client = storage.Client()\r\n blob = Blob.from_string(\"gs://jdimatteo-gunk/example/upload_from_string_error/reproduce_error.txt\")\r\n blob.upload_from_string(\"foo\", client=storage_client)\r\n\r\ndef workaround_1():\r\n storage_client = storage.Client()\r\n blob = Blob.from_string(\r\n \"gs://jdimatteo-gunk/example/upload_from_string_error/workaround_1.txt\",\r\n client=storage_client)\r\n blob.upload_from_string(\"workaround_1\\n\")\r\n\r\ndef workaround_2():\r\n storage_client = storage.Client()\r\n blob = Blob.from_string(\"gs://jdimatteo-gunk/example/upload_from_string_error/workaround_2.txt\")\r\n blob.bucket._client = storage_client\r\n blob.upload_from_string(\"workaround_2\\n\")\r\n\r\nworkaround_1()\r\nworkaround_2()\r\nreproduce_error()\r\n```\r\n\r\n#### Stack trace\r\n```\r\n$ python example.py \r\nTraceback (most recent call last):\r\n File \"example.py\", line 24, in \u003cmodule\u003e\r\n reproduce_error()\r\n File \"example.py\", line 7, in reproduce_error\r\n blob.upload_from_string(\"foo\", client=storage_client)\r\n File \"/usr/local/google/home/jdimatteo/gunk/upload_from_string_error_example/venv/lib/python3.8/site-packages/google/cloud/storage/blob.py\", line 2440, in upload_from_string\r\n self.upload_from_file(\r\n File \"/usr/local/google/home/jdimatteo/gunk/upload_from_string_error_example/venv/lib/python3.8/site-packages/google/cloud/storage/blob.py\", line 2223, in upload_from_file\r\n created_json = self._do_upload(\r\n File \"/usr/local/google/home/jdimatteo/gunk/upload_from_string_error_example/venv/lib/python3.8/site-packages/google/cloud/storage/blob.py\", line 2055, in _do_upload\r\n response = self._do_multipart_upload(\r\n File \"/usr/local/google/home/jdimatteo/gunk/upload_from_string_error_example/venv/lib/python3.8/site-packages/google/cloud/storage/blob.py\", line 1614, in _do_multipart_upload\r\n hostname=self.client._connection.API_BASE_URL, bucket_path=self.bucket.path\r\nAttributeError: 'NoneType' object has no attribute '_connection'\r\n$ gsutil cat gs://jdimatteo-gunk/example/upload_from_string_error/workaround_1.txt\r\nworkaround_1\r\n$ gsutil cat gs://jdimatteo-gunk/example/upload_from_string_error/workaround_2.txt\r\nworkaround_2\r\n```","author":{"url":"https://github.com/jdimatteo","@type":"Person","name":"jdimatteo"},"datePublished":"2020-10-01T19:55:15.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/286/python-storage/issues/286"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:784369cc-6cfd-bb41-2708-705ae2e9e6b2 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 8C88:50919:3489F86:48120B9:6A4F0F2A |
| html-safe-nonce | b964f9803308e8c58f0bf3646d81d184d63cd24c4c1e411f685865b6e990f41c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4Qzg4OjUwOTE5OjM0ODlGODY6NDgxMjBCOTo2QTRGMEYyQSIsInZpc2l0b3JfaWQiOiI3MDA5NjgxNDQ4Mjk1NjY1NDUwIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | c81ee72f6edd0f63c2906ba1d89dfb264159ab9f3786a6de05704177d71d3d3f |
| hovercard-subject-tag | issue:713141040 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/googleapis/python-storage/286/issue_layout |
| twitter:image | https://opengraph.githubassets.com/3d1c444aa7f05fe26fed9641e1ee161476e146d21e7d18b5134f1cef086b3b22/googleapis/python-storage/issues/286 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/3d1c444aa7f05fe26fed9641e1ee161476e146d21e7d18b5134f1cef086b3b22/googleapis/python-storage/issues/286 |
| og:image:alt | Environment details OS type and version: variant of Debian Linux Python version: 3.8.5 pip version: 20.1.1 google-cloud-storage version: 1.31.2 Steps to reproduce create Blob object using from_stri... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | jdimatteo |
| hostname | github.com |
| expected-hostname | github.com |
| None | b92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9 |
| turbo-cache-control | no-preview |
| go-import | github.com/googleapis/python-storage git https://github.com/googleapis/python-storage.git |
| octolytics-dimension-user_id | 16785467 |
| octolytics-dimension-user_login | googleapis |
| octolytics-dimension-repository_id | 226992639 |
| octolytics-dimension-repository_nwo | googleapis/python-storage |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 226992639 |
| octolytics-dimension-repository_network_root_nwo | googleapis/python-storage |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 2b8f23afb982271f1b22258a94aede67a6b77760 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width