Uh oh!
There was an error while loading. Please reload this page.
Python: Add Google Cloud Storage support - #6906
Conversation
68cc990 to
5345bb9CompareFokko
commented
Feb 27, 2023
@Buktoria this is awesome, thanks for working on this. Let me know when it is ready for review! |
2e59713 to
aa58ac2Compareaa58ac2 to
626aa7eCompare| test: | ||
| poetry run coverage run --source=pyiceberg/ -m pytest tests/ -m "not s3 and not adlfs" ${PYTEST_ARGS} | ||
| poetry run coverage run --source=pyiceberg/ -m pytest tests/ -m "not s3 and not adlfs and not gcs" ${PYTEST_ARGS} |
There was a problem hiding this comment.
This will get prettier once #6398 has been merged
9c5a826 to
a3d430bCompareBuktoria
commented
Mar 13, 2023
@Fokko This PR is ready to be reviewed |
JonasJ-ap
left a comment
There was a problem hiding this comment.
Thank you for your great work!
| } | ||
| return GcsFileSystem(**client_kwargs) | ||
| else: | ||
| return GcsFileSystem() |
There was a problem hiding this comment.
[Question] Is it possible to take out this if...else..., like:
elifschemein {"gs", "gcs"}:
client_kwargs= {
"access_token": self.properties.get("gs.access-token"),
"credential_token_expiration": self.properties.get("gs.credential-token-expiration"),
}
returnGcsFileSystem(**client_kwargs)?
Is there any problem if access_token is not given but credential_token_expiration is provided? Thank you in advance for your answer.
Fokko
commented
Apr 10, 2023
@Buktoria thanks for raising this. I was out for a couple of weeks, could you resolve the merge conflicts? I'll review the PR asap. |
Uh oh!
There was an error while loading. Please reload this page.
Fokko
commented
May 14, 2023
@Buktoria Gentle ping! :) |
Buktoria
commented
May 23, 2023
Hey Fokko. I have been away, and just got back over the weekend. I will make sure to wrap this up this week. So sorry for the delay. |
Fokko
commented
Jun 13, 2023
@Buktoria No problem, just checking if it is still on your list. Would be really cool to get this in. |
Fokko
commented
Jul 18, 2023
@Buktoria Gente ping from my side. Would be great to get this in. |
| } | ||
| return S3FileSystem(**client_kwargs) | ||
| elif scheme in {"gs", "gcs"}: | ||
| if access_token := self.properties.get("gs.access-token"): |
There was a problem hiding this comment.
I think this property should be gs.token based on the properties in the readme
| } | ||
| return S3FileSystem(**client_kwargs) | ||
| elif scheme in {"gs", "gcs"}: | ||
| if access_token := self.properties.get("gs.access-token"): |
There was a problem hiding this comment.
Can we add gs.credential-token-expiration to the docs?
There was a problem hiding this comment.
I missed it. I've added it to the docs now.
| | adlfs.client-secret | oCA3R6P\*ka#oa1Sms2J74z... | The client-secret | | ||
| | adlfs.client-secret | oCA3R6P\*ka#oa1Sms2J74z... | The client-secret | | ||
| ### Google Cloud Storage |
There was a problem hiding this comment.
It would be nice if the Python GCS properties could be consistent with the Java properties where possible. Java already has some properties defined so starting with those would help avoid any backwards compatibility issues (rather than changing them). There is also a PR to add OAuth2 access token properties on the Java side.
71e7135 to
d17d112Compared17d112 to
8b2ba33CompareCo-authored-by: Fokko Driesprong <fokko@apache.org>
Fokko
left a comment
There was a problem hiding this comment.
Thanks for picking this up, it looks like the CI is failing. Can you run pip3 install pre-commit && pre-commit run --all-files?
| | Key | Example | Description | | ||
| | ----------------------- | ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | adlfs.connection-string | AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqF...;BlobEndpoint=http://localhost/ | A [connection string](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string). This could be used to use FileIO with any adlfs-compatible object storage service that has a different endpoint (like [azurite](https://github.com/azure/azurite)). | | ||
There was a problem hiding this comment.
Can you remove this unrelated change?
| | s3fs | S3FS as a FileIO implementation to interact with the object store | | ||
| | adlfs | ADLFS as a FileIO implementation to interact with the object store | | ||
| | snappy | Support for snappy Avro compression | | ||
| | gcs | GCS as the FileIO implementation to interact with the object store | |
There was a problem hiding this comment.
| |gcs | GCS as the FileIO implementation to interact with the object store | | |
| |gcsfs| GCS as the FileIO implementation to interact with the object store | |
Adding Google Cloud Storage support to the Python Iceberg CLI
gcsfspython libGcsFileSystemclass