Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update RemoteStore.__str__ and add UPath tests #1964

Merged
merged 9 commits into from
Jun 23, 2024

Conversation

d-v-b
Copy link
Contributor

@d-v-b d-v-b commented Jun 12, 2024

This PR changes the .__str__ method of RemoteStore to make it similar to LocalStore and MemoryStore (i.e., RemoteStore("s3://path").__str__ returns s3://path).

I also add tests for UPath, and tweaked the test suite accordingly. The tests are failing, and I don't know why. @martindurant could you take a look if you have time? edit: tests are passing

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

@d-v-b
Copy link
Contributor Author

d-v-b commented Jun 12, 2024

the test failures were due to a trailing "/" character added to the url / path attributes in the "init-from-UPath" code paths, and that's resolved via str.rstrip('/')

@d-v-b d-v-b requested review from martindurant and jhamman and removed request for martindurant June 12, 2024 19:58
@d-v-b d-v-b added the V3 label Jun 12, 2024
if isinstance(url, str):
self._fs, self.path = fsspec.url_to_fs(url, **storage_options)
self._url = url.rstrip("/")
self._fs, _path = fsspec.url_to_fs(url, **storage_options)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a case where url has no trailing "/", but the return fom url_to_fs does?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not aware of any, but I wanted to ensure that the UPath and non-UPath code paths do the exact same thing to the url string.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might be misunderstanding the question...

tests/v3/test_store/test_remote.py Show resolved Hide resolved
tests/v3/test_store/test_remote.py Show resolved Hide resolved
tests/v3/test_store/test_remote.py Outdated Show resolved Hide resolved
tests/v3/test_store/test_remote.py Show resolved Hide resolved
@@ -71,10 +76,10 @@ def __init__(
raise TypeError("FileSystem needs to support async operations")

def __str__(self) -> str:
return f"Remote fsspec store: {type(self._fs).__name__} , {self.path}"
return f"{self._url}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are implying that this store is the only way to access the URL displayed here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, but this is consistent with our current practice for memory store and local store. Yes, this practice does mean that RemoteStore for local files will have the same str output as LocalStore, but I figure we should make the stores consistent before making them correct.

@martindurant
Copy link
Member

None of my comments are blockers

@d-v-b d-v-b merged commit ea6b441 into zarr-developers:v3 Jun 23, 2024
17 of 18 checks passed
@d-v-b d-v-b deleted the remote_store_str branch June 23, 2024 21:52
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jun 25, 2024
* v3: (22 commits)
  [v3] `Buffer` ensure correct subclass based on the `BufferPrototype` argument (zarr-developers#1974)
  Fix doc build (zarr-developers#1987)
  Fix doc build warnings (zarr-developers#1985)
  Automatically generate API reference docs (zarr-developers#1918)
  Update `RemoteStore.__str__` and add UPath tests (zarr-developers#1964)
  [v3] Elevate codec pipeline (zarr-developers#1932)
  0 dim arrays: indexing (zarr-developers#1980)
  `parse_shapelike` allows 0 (zarr-developers#1979)
  Clean up typing and docs for indexing (zarr-developers#1961)
  add json indentation to config (zarr-developers#1952)
  chore: update pre-commit hooks (zarr-developers#1973)
  Bump pypa/gh-action-pypi-publish in the actions group (zarr-developers#1969)
  chore: update pre-commit hooks (zarr-developers#1957)
  Update release.rst (zarr-developers#1960)
  doc: update release notes for 3.0.0.alpha (zarr-developers#1959)
  Basic working FsspecStore (zarr-developers#1785)
  Feature: Top level V3 API (zarr-developers#1884)
  Buffer Prototype Argument (zarr-developers#1910)
  Create issue-metrics.yml
  fixes bug in transpose (zarr-developers#1949)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants