array tests: handle different hexdigests from zlib-ng (#1678) - #1972

Merged
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2
Jan 16, 2025
Merged

array tests: handle different hexdigests from zlib-ng (#1678)#1972
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2

Conversation

@AdamWill

Copy link
Copy Markdown

As explained in the issue, zlib-ng produces different hex digests from original zlib. This adjusts the tests slightly to allow for this.

TODO:

  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Removed TODO items are irrelevant as this only changes tests. This is more or less the same as #1971 , but for the main (v2) branch rather than v3 branch.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from d883b61 to b428945CompareJune 17, 2024 18:42
@AdamWillAdamWill changed the title v2 array tests: handle different hexdigests from zlib-ng (#1678)array tests: handle different hexdigests from zlib-ng (#1678)Jun 17, 2024
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from b428945 to 375bb63CompareJune 17, 2024 18:45
@AdamWill

Copy link
Copy Markdown
Author

If I run black on the changed file here locally it does indeed want to change a bunch of stuff, but none of it is stuff this PR touches - the issues already exist.

@AdamWillAdamWill mentioned this pull request Jun 17, 2024
@d-v-b

Copy link
Copy Markdown
Contributor

Thanks for the fix. For posterity, the ideal way to handle two different versions of zlib would be to condition the test case on the detected zlib version, but our test design makes that very tedious and not worth the effort. I think what you have done here is good!

@d-v-bd-v-b self-assigned this Jun 17, 2024
@d-v-b
d-v-b self-requested a review June 17, 2024 18:51
@d-v-b

Copy link
Copy Markdown
Contributor

we are seeing test failures due to numpy 2.0 I think

@AdamWill

Copy link
Copy Markdown
Author

yeah, it looks like numpy got some custom types. I guess you might need to do stuff like:

diff --git a/src/zarr/v2/core.py b/src/zarr/v2/core.py
index c1223dac..04da6749 100644
--- a/src/zarr/v2/core.py
+++ b/src/zarr/v2/core.py
@@ -759,7 +759,7 @@ class Array:
Retrieve a single item::
- >>> z.get_basic_selection(5)
+ >>> int(z.get_basic_selection(5))
5
Retrieve a region via slicing::

or something along those lines.

@QuLogic

Copy link
Copy Markdown
Contributor

I guess the NumPy stuff was fixed by #2073, so this might just need a rebase.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 375bb63 to d6aed0dCompareAugust 19, 2024 14:48
@AdamWill

Copy link
Copy Markdown
Author

Rebased.

@dstansby

Copy link
Copy Markdown
Contributor

Thanks for the PR - is there any way we can install zlib-ng and test against it in our continuous integration? I'm wary about adding these new digests without actually testing them to make sure they're correct.

@AdamWill

Copy link
Copy Markdown
Author

Possibly by using this PPA. I can play around with it if I get time.

AFAIK github doesn't offer anything besides Ubuntu and Windows as hosted runners, so if you want to run on any other OS you have to self-host the runners, which is a whole thing.

@dstansby

Copy link
Copy Markdown
Contributor

It looks like there's a package on PyPI: https://pypi.org/project/zlib-ng/, so perhaps we could install that on Ubuntu and test the new digests using that?

@AdamWill

Copy link
Copy Markdown
Author

It's a bit confusing, but I think that's only python bindings. If you look at their CI, they install miniconda and then https://anaconda.org/conda-forge/zlib-ng to get zlib-ng itself before installing their own thing - https://github.com/pycompression/python-zlib-ng/blob/develop/.github/workflows/ci.yml#L120 . Presumably you'd also have to do that here. I kinda feel like using a PPA that replaces the system zlib seems more straightforward than doing that, but I haven't tried either way yet, tbf...

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch 2 times, most recently from e799e24 to af7d892CompareSeptember 6, 2024 22:02
@AdamWill

AdamWill commented Sep 6, 2024

Copy link
Copy Markdown
Author

huh, so it looks like we already have miniconda in our CI anyway so it should be fairly trivial to add a matrix dimension that tests with zlib-ng from miniconda - that's what I tried to do here - but GHA doesn't seem to be generating that matrix combination. not sure if it needs admin approval or something?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from af7d892 to caec68fCompareSeptember 6, 2024 22:20
@AdamWill

Copy link
Copy Markdown
Author

this is a slightly different way which should avoid a bit of a combinatorial explosion effect, but GHA still doesn't seem to pick up the change :/

@jhammanjhamman added the V2 Affects the v2 branch label Oct 11, 2024
@jhamman
jhamman changed the base branch from main to support/2.xOctober 11, 2024 23:38
@jhamman

Copy link
Copy Markdown
Member

I've moved the base branch of this PR to support/2.x in case there is interest in continuing this work.

@AdamWill

Copy link
Copy Markdown
Author

well, I don't know why GHA isn't picking up the test matrix change, and I'm not an admin so I can't really poke about much and find out. I'm a bit stuck there.

@QuLogic

Copy link
Copy Markdown
Contributor

I don't see any links to any workflow runs on the commit related to the changed file, so that suggests that perhaps there is a syntax error?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from caec68f to 21a0333CompareOctober 12, 2024 06:48
@AdamWill

Copy link
Copy Markdown
Author

hum, well, I did see one thing (I had condadeps as an array in one case but a string in the other, it should be a string in both I think). not sure if that was the issue, though. edited and rebased.

@QuLogic

Copy link
Copy Markdown
Contributor

This repo also has the stricter workflow approval setting enabled, so it's quite possible that that is interfering.

You may be able to confirm by pushing to main on your fork (and maybe confirming Actions settings in your fork).

@dstansby

Copy link
Copy Markdown
Contributor

Hmm, I'm not even getting the option to approve the workflow runs. Let me close and re-open this PR to see if that helps.

@dstansbydstansby reopened this Oct 13, 2024
@dstansbydstansby mentioned this pull request Oct 13, 2024
@dstansby

Copy link
Copy Markdown
Contributor

Ah, this is because we are in branch naming flux, and #2349 needs to get in before we can run actions on the v2 branch. Sorry about this, when it's working again I'll run the tests, and if they pass give this a merge. Thanks for the contribution and patience with us on this!

@jhamman

Copy link
Copy Markdown
Member

CI should be up and running again now.

@AdamWill

Copy link
Copy Markdown
Author

aaaagh merge commits, evil! i'll rebase.

@AdamWill

Copy link
Copy Markdown
Author

the merge-commit version actually seems wrong as it's badly merged (it'll cause python 3.13 with numpy 1.24 to be included, not excluded).

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 33fad90 to f586ec3CompareOctober 18, 2024 21:33
@dstansby

Copy link
Copy Markdown
Contributor

Sorry 🙈

@AdamWill

Copy link
Copy Markdown
Author

Ugh. https://github.com/zarr-developers/zarr-python/actions/runs/11411354019 . What the heck? Why can't I use an empty string?

I was trying to avoid duplicating 'pip nodejs' in the two places we define the conda deps string, but if we can't use an empty string in one place I don't see how :(

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from f586ec3 to 233c5b0CompareOctober 18, 2024 22:10
@QuLogic

Copy link
Copy Markdown
Contributor

It was right with the array, I think; as the matrix expands everything as the product of every list item. At least, all their examples use arrays, though none of them contain only a single item.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 233c5b0 to 71d01aeCompareOctober 18, 2024 22:56
@AdamWill

Copy link
Copy Markdown
Author

ok then, let's try them both as arrays...

…s#1678)
As explained in the issue, zlib-ng produces different hex digests
from original zlib. This adjusts the tests slightly to allow for
this.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 71d01ae to c544a50CompareOctober 20, 2024 15:37
@AdamWill

Copy link
Copy Markdown
Author

ugh. no. I'm pretty sure it was right the first time: first def is an array, second is a string. back to that.

@dstansbydstansby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks again for this, and sorry it's taken so long - I will merge if CI passes.

@dstansby
dstansby merged commit b00325e into zarr-developers:support/v2Jan 16, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

V2Affects the v2 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@AdamWill@d-v-b@QuLogic@dstansby@jhamman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

array tests: handle different hexdigests from zlib-ng (#1678) - #1972

Merged
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2
Jan 16, 2025
Merged

array tests: handle different hexdigests from zlib-ng (#1678)#1972
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2

Conversation

@AdamWill

Copy link
Copy Markdown

As explained in the issue, zlib-ng produces different hex digests from original zlib. This adjusts the tests slightly to allow for this.

TODO:

  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Removed TODO items are irrelevant as this only changes tests. This is more or less the same as #1971 , but for the main (v2) branch rather than v3 branch.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from d883b61 to b428945CompareJune 17, 2024 18:42
@AdamWillAdamWill changed the title v2 array tests: handle different hexdigests from zlib-ng (#1678)array tests: handle different hexdigests from zlib-ng (#1678)Jun 17, 2024
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from b428945 to 375bb63CompareJune 17, 2024 18:45
@AdamWill

Copy link
Copy Markdown
Author

If I run black on the changed file here locally it does indeed want to change a bunch of stuff, but none of it is stuff this PR touches - the issues already exist.

@AdamWillAdamWill mentioned this pull request Jun 17, 2024
@d-v-b

Copy link
Copy Markdown
Contributor

Thanks for the fix. For posterity, the ideal way to handle two different versions of zlib would be to condition the test case on the detected zlib version, but our test design makes that very tedious and not worth the effort. I think what you have done here is good!

@d-v-bd-v-b self-assigned this Jun 17, 2024
@d-v-b
d-v-b self-requested a review June 17, 2024 18:51
@d-v-b

Copy link
Copy Markdown
Contributor

we are seeing test failures due to numpy 2.0 I think

@AdamWill

Copy link
Copy Markdown
Author

yeah, it looks like numpy got some custom types. I guess you might need to do stuff like:

diff --git a/src/zarr/v2/core.py b/src/zarr/v2/core.py
index c1223dac..04da6749 100644
--- a/src/zarr/v2/core.py
+++ b/src/zarr/v2/core.py
@@ -759,7 +759,7 @@ class Array:
Retrieve a single item::
- >>> z.get_basic_selection(5)
+ >>> int(z.get_basic_selection(5))
5
Retrieve a region via slicing::

or something along those lines.

@QuLogic

Copy link
Copy Markdown
Contributor

I guess the NumPy stuff was fixed by #2073, so this might just need a rebase.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 375bb63 to d6aed0dCompareAugust 19, 2024 14:48
@AdamWill

Copy link
Copy Markdown
Author

Rebased.

@dstansby

Copy link
Copy Markdown
Contributor

Thanks for the PR - is there any way we can install zlib-ng and test against it in our continuous integration? I'm wary about adding these new digests without actually testing them to make sure they're correct.

@AdamWill

Copy link
Copy Markdown
Author

Possibly by using this PPA. I can play around with it if I get time.

AFAIK github doesn't offer anything besides Ubuntu and Windows as hosted runners, so if you want to run on any other OS you have to self-host the runners, which is a whole thing.

@dstansby

Copy link
Copy Markdown
Contributor

It looks like there's a package on PyPI: https://pypi.org/project/zlib-ng/, so perhaps we could install that on Ubuntu and test the new digests using that?

@AdamWill

Copy link
Copy Markdown
Author

It's a bit confusing, but I think that's only python bindings. If you look at their CI, they install miniconda and then https://anaconda.org/conda-forge/zlib-ng to get zlib-ng itself before installing their own thing - https://github.com/pycompression/python-zlib-ng/blob/develop/.github/workflows/ci.yml#L120 . Presumably you'd also have to do that here. I kinda feel like using a PPA that replaces the system zlib seems more straightforward than doing that, but I haven't tried either way yet, tbf...

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch 2 times, most recently from e799e24 to af7d892CompareSeptember 6, 2024 22:02
@AdamWill

AdamWill commented Sep 6, 2024

Copy link
Copy Markdown
Author

huh, so it looks like we already have miniconda in our CI anyway so it should be fairly trivial to add a matrix dimension that tests with zlib-ng from miniconda - that's what I tried to do here - but GHA doesn't seem to be generating that matrix combination. not sure if it needs admin approval or something?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from af7d892 to caec68fCompareSeptember 6, 2024 22:20
@AdamWill

Copy link
Copy Markdown
Author

this is a slightly different way which should avoid a bit of a combinatorial explosion effect, but GHA still doesn't seem to pick up the change :/

@jhammanjhamman added the V2 Affects the v2 branch label Oct 11, 2024
@jhamman
jhamman changed the base branch from main to support/2.xOctober 11, 2024 23:38
@jhamman

Copy link
Copy Markdown
Member

I've moved the base branch of this PR to support/2.x in case there is interest in continuing this work.

@AdamWill

Copy link
Copy Markdown
Author

well, I don't know why GHA isn't picking up the test matrix change, and I'm not an admin so I can't really poke about much and find out. I'm a bit stuck there.

@QuLogic

Copy link
Copy Markdown
Contributor

I don't see any links to any workflow runs on the commit related to the changed file, so that suggests that perhaps there is a syntax error?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from caec68f to 21a0333CompareOctober 12, 2024 06:48
@AdamWill

Copy link
Copy Markdown
Author

hum, well, I did see one thing (I had condadeps as an array in one case but a string in the other, it should be a string in both I think). not sure if that was the issue, though. edited and rebased.

@QuLogic

Copy link
Copy Markdown
Contributor

This repo also has the stricter workflow approval setting enabled, so it's quite possible that that is interfering.

You may be able to confirm by pushing to main on your fork (and maybe confirming Actions settings in your fork).

@dstansby

Copy link
Copy Markdown
Contributor

Hmm, I'm not even getting the option to approve the workflow runs. Let me close and re-open this PR to see if that helps.

@dstansbydstansby reopened this Oct 13, 2024
@dstansbydstansby mentioned this pull request Oct 13, 2024
@dstansby

Copy link
Copy Markdown
Contributor

Ah, this is because we are in branch naming flux, and #2349 needs to get in before we can run actions on the v2 branch. Sorry about this, when it's working again I'll run the tests, and if they pass give this a merge. Thanks for the contribution and patience with us on this!

@jhamman

Copy link
Copy Markdown
Member

CI should be up and running again now.

@AdamWill

Copy link
Copy Markdown
Author

aaaagh merge commits, evil! i'll rebase.

@AdamWill

Copy link
Copy Markdown
Author

the merge-commit version actually seems wrong as it's badly merged (it'll cause python 3.13 with numpy 1.24 to be included, not excluded).

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 33fad90 to f586ec3CompareOctober 18, 2024 21:33
@dstansby

Copy link
Copy Markdown
Contributor

Sorry 🙈

@AdamWill

Copy link
Copy Markdown
Author

Ugh. https://github.com/zarr-developers/zarr-python/actions/runs/11411354019 . What the heck? Why can't I use an empty string?

I was trying to avoid duplicating 'pip nodejs' in the two places we define the conda deps string, but if we can't use an empty string in one place I don't see how :(

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from f586ec3 to 233c5b0CompareOctober 18, 2024 22:10
@QuLogic

Copy link
Copy Markdown
Contributor

It was right with the array, I think; as the matrix expands everything as the product of every list item. At least, all their examples use arrays, though none of them contain only a single item.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 233c5b0 to 71d01aeCompareOctober 18, 2024 22:56
@AdamWill

Copy link
Copy Markdown
Author

ok then, let's try them both as arrays...

…s#1678)
As explained in the issue, zlib-ng produces different hex digests
from original zlib. This adjusts the tests slightly to allow for
this.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 71d01ae to c544a50CompareOctober 20, 2024 15:37
@AdamWill

Copy link
Copy Markdown
Author

ugh. no. I'm pretty sure it was right the first time: first def is an array, second is a string. back to that.

@dstansbydstansby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks again for this, and sorry it's taken so long - I will merge if CI passes.

@dstansby
dstansby merged commit b00325e into zarr-developers:support/v2Jan 16, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

V2Affects the v2 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@AdamWill@d-v-b@QuLogic@dstansby@jhamman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

array tests: handle different hexdigests from zlib-ng (#1678) - #1972

Merged
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2
Jan 16, 2025
Merged

array tests: handle different hexdigests from zlib-ng (#1678)#1972
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2

Conversation

@AdamWill

Copy link
Copy Markdown

As explained in the issue, zlib-ng produces different hex digests from original zlib. This adjusts the tests slightly to allow for this.

TODO:

  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Removed TODO items are irrelevant as this only changes tests. This is more or less the same as #1971 , but for the main (v2) branch rather than v3 branch.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from d883b61 to b428945CompareJune 17, 2024 18:42
@AdamWillAdamWill changed the title v2 array tests: handle different hexdigests from zlib-ng (#1678)array tests: handle different hexdigests from zlib-ng (#1678)Jun 17, 2024
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from b428945 to 375bb63CompareJune 17, 2024 18:45
@AdamWill

Copy link
Copy Markdown
Author

If I run black on the changed file here locally it does indeed want to change a bunch of stuff, but none of it is stuff this PR touches - the issues already exist.

@AdamWillAdamWill mentioned this pull request Jun 17, 2024
@d-v-b

Copy link
Copy Markdown
Contributor

Thanks for the fix. For posterity, the ideal way to handle two different versions of zlib would be to condition the test case on the detected zlib version, but our test design makes that very tedious and not worth the effort. I think what you have done here is good!

@d-v-bd-v-b self-assigned this Jun 17, 2024
@d-v-b
d-v-b self-requested a review June 17, 2024 18:51
@d-v-b

Copy link
Copy Markdown
Contributor

we are seeing test failures due to numpy 2.0 I think

@AdamWill

Copy link
Copy Markdown
Author

yeah, it looks like numpy got some custom types. I guess you might need to do stuff like:

diff --git a/src/zarr/v2/core.py b/src/zarr/v2/core.py
index c1223dac..04da6749 100644
--- a/src/zarr/v2/core.py
+++ b/src/zarr/v2/core.py
@@ -759,7 +759,7 @@ class Array:
Retrieve a single item::
- >>> z.get_basic_selection(5)
+ >>> int(z.get_basic_selection(5))
5
Retrieve a region via slicing::

or something along those lines.

@QuLogic

Copy link
Copy Markdown
Contributor

I guess the NumPy stuff was fixed by #2073, so this might just need a rebase.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 375bb63 to d6aed0dCompareAugust 19, 2024 14:48
@AdamWill

Copy link
Copy Markdown
Author

Rebased.

@dstansby

Copy link
Copy Markdown
Contributor

Thanks for the PR - is there any way we can install zlib-ng and test against it in our continuous integration? I'm wary about adding these new digests without actually testing them to make sure they're correct.

@AdamWill

Copy link
Copy Markdown
Author

Possibly by using this PPA. I can play around with it if I get time.

AFAIK github doesn't offer anything besides Ubuntu and Windows as hosted runners, so if you want to run on any other OS you have to self-host the runners, which is a whole thing.

@dstansby

Copy link
Copy Markdown
Contributor

It looks like there's a package on PyPI: https://pypi.org/project/zlib-ng/, so perhaps we could install that on Ubuntu and test the new digests using that?

@AdamWill

Copy link
Copy Markdown
Author

It's a bit confusing, but I think that's only python bindings. If you look at their CI, they install miniconda and then https://anaconda.org/conda-forge/zlib-ng to get zlib-ng itself before installing their own thing - https://github.com/pycompression/python-zlib-ng/blob/develop/.github/workflows/ci.yml#L120 . Presumably you'd also have to do that here. I kinda feel like using a PPA that replaces the system zlib seems more straightforward than doing that, but I haven't tried either way yet, tbf...

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch 2 times, most recently from e799e24 to af7d892CompareSeptember 6, 2024 22:02
@AdamWill

AdamWill commented Sep 6, 2024

Copy link
Copy Markdown
Author

huh, so it looks like we already have miniconda in our CI anyway so it should be fairly trivial to add a matrix dimension that tests with zlib-ng from miniconda - that's what I tried to do here - but GHA doesn't seem to be generating that matrix combination. not sure if it needs admin approval or something?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from af7d892 to caec68fCompareSeptember 6, 2024 22:20
@AdamWill

Copy link
Copy Markdown
Author

this is a slightly different way which should avoid a bit of a combinatorial explosion effect, but GHA still doesn't seem to pick up the change :/

@jhammanjhamman added the V2 Affects the v2 branch label Oct 11, 2024
@jhamman
jhamman changed the base branch from main to support/2.xOctober 11, 2024 23:38
@jhamman

Copy link
Copy Markdown
Member

I've moved the base branch of this PR to support/2.x in case there is interest in continuing this work.

@AdamWill

Copy link
Copy Markdown
Author

well, I don't know why GHA isn't picking up the test matrix change, and I'm not an admin so I can't really poke about much and find out. I'm a bit stuck there.

@QuLogic

Copy link
Copy Markdown
Contributor

I don't see any links to any workflow runs on the commit related to the changed file, so that suggests that perhaps there is a syntax error?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from caec68f to 21a0333CompareOctober 12, 2024 06:48
@AdamWill

Copy link
Copy Markdown
Author

hum, well, I did see one thing (I had condadeps as an array in one case but a string in the other, it should be a string in both I think). not sure if that was the issue, though. edited and rebased.

@QuLogic

Copy link
Copy Markdown
Contributor

This repo also has the stricter workflow approval setting enabled, so it's quite possible that that is interfering.

You may be able to confirm by pushing to main on your fork (and maybe confirming Actions settings in your fork).

@dstansby

Copy link
Copy Markdown
Contributor

Hmm, I'm not even getting the option to approve the workflow runs. Let me close and re-open this PR to see if that helps.

@dstansbydstansby reopened this Oct 13, 2024
@dstansbydstansby mentioned this pull request Oct 13, 2024
@dstansby

Copy link
Copy Markdown
Contributor

Ah, this is because we are in branch naming flux, and #2349 needs to get in before we can run actions on the v2 branch. Sorry about this, when it's working again I'll run the tests, and if they pass give this a merge. Thanks for the contribution and patience with us on this!

@jhamman

Copy link
Copy Markdown
Member

CI should be up and running again now.

@AdamWill

Copy link
Copy Markdown
Author

aaaagh merge commits, evil! i'll rebase.

@AdamWill

Copy link
Copy Markdown
Author

the merge-commit version actually seems wrong as it's badly merged (it'll cause python 3.13 with numpy 1.24 to be included, not excluded).

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 33fad90 to f586ec3CompareOctober 18, 2024 21:33
@dstansby

Copy link
Copy Markdown
Contributor

Sorry 🙈

@AdamWill

Copy link
Copy Markdown
Author

Ugh. https://github.com/zarr-developers/zarr-python/actions/runs/11411354019 . What the heck? Why can't I use an empty string?

I was trying to avoid duplicating 'pip nodejs' in the two places we define the conda deps string, but if we can't use an empty string in one place I don't see how :(

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from f586ec3 to 233c5b0CompareOctober 18, 2024 22:10
@QuLogic

Copy link
Copy Markdown
Contributor

It was right with the array, I think; as the matrix expands everything as the product of every list item. At least, all their examples use arrays, though none of them contain only a single item.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 233c5b0 to 71d01aeCompareOctober 18, 2024 22:56
@AdamWill

Copy link
Copy Markdown
Author

ok then, let's try them both as arrays...

…s#1678)
As explained in the issue, zlib-ng produces different hex digests
from original zlib. This adjusts the tests slightly to allow for
this.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 71d01ae to c544a50CompareOctober 20, 2024 15:37
@AdamWill

Copy link
Copy Markdown
Author

ugh. no. I'm pretty sure it was right the first time: first def is an array, second is a string. back to that.

@dstansbydstansby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks again for this, and sorry it's taken so long - I will merge if CI passes.

@dstansby
dstansby merged commit b00325e into zarr-developers:support/v2Jan 16, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

V2Affects the v2 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@AdamWill@d-v-b@QuLogic@dstansby@jhamman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

array tests: handle different hexdigests from zlib-ng (#1678) - #1972

Merged
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2
Jan 16, 2025
Merged

array tests: handle different hexdigests from zlib-ng (#1678)#1972
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2

Conversation

@AdamWill

Copy link
Copy Markdown

As explained in the issue, zlib-ng produces different hex digests from original zlib. This adjusts the tests slightly to allow for this.

TODO:

  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Removed TODO items are irrelevant as this only changes tests. This is more or less the same as #1971 , but for the main (v2) branch rather than v3 branch.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from d883b61 to b428945CompareJune 17, 2024 18:42
@AdamWillAdamWill changed the title v2 array tests: handle different hexdigests from zlib-ng (#1678)array tests: handle different hexdigests from zlib-ng (#1678)Jun 17, 2024
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from b428945 to 375bb63CompareJune 17, 2024 18:45
@AdamWill

Copy link
Copy Markdown
Author

If I run black on the changed file here locally it does indeed want to change a bunch of stuff, but none of it is stuff this PR touches - the issues already exist.

@AdamWillAdamWill mentioned this pull request Jun 17, 2024
@d-v-b

Copy link
Copy Markdown
Contributor

Thanks for the fix. For posterity, the ideal way to handle two different versions of zlib would be to condition the test case on the detected zlib version, but our test design makes that very tedious and not worth the effort. I think what you have done here is good!

@d-v-bd-v-b self-assigned this Jun 17, 2024
@d-v-b
d-v-b self-requested a review June 17, 2024 18:51
@d-v-b

Copy link
Copy Markdown
Contributor

we are seeing test failures due to numpy 2.0 I think

@AdamWill

Copy link
Copy Markdown
Author

yeah, it looks like numpy got some custom types. I guess you might need to do stuff like:

diff --git a/src/zarr/v2/core.py b/src/zarr/v2/core.py
index c1223dac..04da6749 100644
--- a/src/zarr/v2/core.py
+++ b/src/zarr/v2/core.py
@@ -759,7 +759,7 @@ class Array:
Retrieve a single item::
- >>> z.get_basic_selection(5)
+ >>> int(z.get_basic_selection(5))
5
Retrieve a region via slicing::

or something along those lines.

@QuLogic

Copy link
Copy Markdown
Contributor

I guess the NumPy stuff was fixed by #2073, so this might just need a rebase.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 375bb63 to d6aed0dCompareAugust 19, 2024 14:48
@AdamWill

Copy link
Copy Markdown
Author

Rebased.

@dstansby

Copy link
Copy Markdown
Contributor

Thanks for the PR - is there any way we can install zlib-ng and test against it in our continuous integration? I'm wary about adding these new digests without actually testing them to make sure they're correct.

@AdamWill

Copy link
Copy Markdown
Author

Possibly by using this PPA. I can play around with it if I get time.

AFAIK github doesn't offer anything besides Ubuntu and Windows as hosted runners, so if you want to run on any other OS you have to self-host the runners, which is a whole thing.

@dstansby

Copy link
Copy Markdown
Contributor

It looks like there's a package on PyPI: https://pypi.org/project/zlib-ng/, so perhaps we could install that on Ubuntu and test the new digests using that?

@AdamWill

Copy link
Copy Markdown
Author

It's a bit confusing, but I think that's only python bindings. If you look at their CI, they install miniconda and then https://anaconda.org/conda-forge/zlib-ng to get zlib-ng itself before installing their own thing - https://github.com/pycompression/python-zlib-ng/blob/develop/.github/workflows/ci.yml#L120 . Presumably you'd also have to do that here. I kinda feel like using a PPA that replaces the system zlib seems more straightforward than doing that, but I haven't tried either way yet, tbf...

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch 2 times, most recently from e799e24 to af7d892CompareSeptember 6, 2024 22:02
@AdamWill

AdamWill commented Sep 6, 2024

Copy link
Copy Markdown
Author

huh, so it looks like we already have miniconda in our CI anyway so it should be fairly trivial to add a matrix dimension that tests with zlib-ng from miniconda - that's what I tried to do here - but GHA doesn't seem to be generating that matrix combination. not sure if it needs admin approval or something?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from af7d892 to caec68fCompareSeptember 6, 2024 22:20
@AdamWill

Copy link
Copy Markdown
Author

this is a slightly different way which should avoid a bit of a combinatorial explosion effect, but GHA still doesn't seem to pick up the change :/

@jhammanjhamman added the V2 Affects the v2 branch label Oct 11, 2024
@jhamman
jhamman changed the base branch from main to support/2.xOctober 11, 2024 23:38
@jhamman

Copy link
Copy Markdown
Member

I've moved the base branch of this PR to support/2.x in case there is interest in continuing this work.

@AdamWill

Copy link
Copy Markdown
Author

well, I don't know why GHA isn't picking up the test matrix change, and I'm not an admin so I can't really poke about much and find out. I'm a bit stuck there.

@QuLogic

Copy link
Copy Markdown
Contributor

I don't see any links to any workflow runs on the commit related to the changed file, so that suggests that perhaps there is a syntax error?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from caec68f to 21a0333CompareOctober 12, 2024 06:48
@AdamWill

Copy link
Copy Markdown
Author

hum, well, I did see one thing (I had condadeps as an array in one case but a string in the other, it should be a string in both I think). not sure if that was the issue, though. edited and rebased.

@QuLogic

Copy link
Copy Markdown
Contributor

This repo also has the stricter workflow approval setting enabled, so it's quite possible that that is interfering.

You may be able to confirm by pushing to main on your fork (and maybe confirming Actions settings in your fork).

@dstansby

Copy link
Copy Markdown
Contributor

Hmm, I'm not even getting the option to approve the workflow runs. Let me close and re-open this PR to see if that helps.

@dstansbydstansby reopened this Oct 13, 2024
@dstansbydstansby mentioned this pull request Oct 13, 2024
@dstansby

Copy link
Copy Markdown
Contributor

Ah, this is because we are in branch naming flux, and #2349 needs to get in before we can run actions on the v2 branch. Sorry about this, when it's working again I'll run the tests, and if they pass give this a merge. Thanks for the contribution and patience with us on this!

@jhamman

Copy link
Copy Markdown
Member

CI should be up and running again now.

@AdamWill

Copy link
Copy Markdown
Author

aaaagh merge commits, evil! i'll rebase.

@AdamWill

Copy link
Copy Markdown
Author

the merge-commit version actually seems wrong as it's badly merged (it'll cause python 3.13 with numpy 1.24 to be included, not excluded).

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 33fad90 to f586ec3CompareOctober 18, 2024 21:33
@dstansby

Copy link
Copy Markdown
Contributor

Sorry 🙈

@AdamWill

Copy link
Copy Markdown
Author

Ugh. https://github.com/zarr-developers/zarr-python/actions/runs/11411354019 . What the heck? Why can't I use an empty string?

I was trying to avoid duplicating 'pip nodejs' in the two places we define the conda deps string, but if we can't use an empty string in one place I don't see how :(

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from f586ec3 to 233c5b0CompareOctober 18, 2024 22:10
@QuLogic

Copy link
Copy Markdown
Contributor

It was right with the array, I think; as the matrix expands everything as the product of every list item. At least, all their examples use arrays, though none of them contain only a single item.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 233c5b0 to 71d01aeCompareOctober 18, 2024 22:56
@AdamWill

Copy link
Copy Markdown
Author

ok then, let's try them both as arrays...

…s#1678)
As explained in the issue, zlib-ng produces different hex digests
from original zlib. This adjusts the tests slightly to allow for
this.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 71d01ae to c544a50CompareOctober 20, 2024 15:37
@AdamWill

Copy link
Copy Markdown
Author

ugh. no. I'm pretty sure it was right the first time: first def is an array, second is a string. back to that.

@dstansbydstansby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks again for this, and sorry it's taken so long - I will merge if CI passes.

@dstansby
dstansby merged commit b00325e into zarr-developers:support/v2Jan 16, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

V2Affects the v2 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@AdamWill@d-v-b@QuLogic@dstansby@jhamman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

array tests: handle different hexdigests from zlib-ng (#1678) - #1972

Merged
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2
Jan 16, 2025
Merged

array tests: handle different hexdigests from zlib-ng (#1678)#1972
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2

Conversation

@AdamWill

Copy link
Copy Markdown

As explained in the issue, zlib-ng produces different hex digests from original zlib. This adjusts the tests slightly to allow for this.

TODO:

  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Removed TODO items are irrelevant as this only changes tests. This is more or less the same as #1971 , but for the main (v2) branch rather than v3 branch.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from d883b61 to b428945CompareJune 17, 2024 18:42
@AdamWillAdamWill changed the title v2 array tests: handle different hexdigests from zlib-ng (#1678)array tests: handle different hexdigests from zlib-ng (#1678)Jun 17, 2024
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from b428945 to 375bb63CompareJune 17, 2024 18:45
@AdamWill

Copy link
Copy Markdown
Author

If I run black on the changed file here locally it does indeed want to change a bunch of stuff, but none of it is stuff this PR touches - the issues already exist.

@AdamWillAdamWill mentioned this pull request Jun 17, 2024
@d-v-b

Copy link
Copy Markdown
Contributor

Thanks for the fix. For posterity, the ideal way to handle two different versions of zlib would be to condition the test case on the detected zlib version, but our test design makes that very tedious and not worth the effort. I think what you have done here is good!

@d-v-bd-v-b self-assigned this Jun 17, 2024
@d-v-b
d-v-b self-requested a review June 17, 2024 18:51
@d-v-b

Copy link
Copy Markdown
Contributor

we are seeing test failures due to numpy 2.0 I think

@AdamWill

Copy link
Copy Markdown
Author

yeah, it looks like numpy got some custom types. I guess you might need to do stuff like:

diff --git a/src/zarr/v2/core.py b/src/zarr/v2/core.py
index c1223dac..04da6749 100644
--- a/src/zarr/v2/core.py
+++ b/src/zarr/v2/core.py
@@ -759,7 +759,7 @@ class Array:
Retrieve a single item::
- >>> z.get_basic_selection(5)
+ >>> int(z.get_basic_selection(5))
5
Retrieve a region via slicing::

or something along those lines.

@QuLogic

Copy link
Copy Markdown
Contributor

I guess the NumPy stuff was fixed by #2073, so this might just need a rebase.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 375bb63 to d6aed0dCompareAugust 19, 2024 14:48
@AdamWill

Copy link
Copy Markdown
Author

Rebased.

@dstansby

Copy link
Copy Markdown
Contributor

Thanks for the PR - is there any way we can install zlib-ng and test against it in our continuous integration? I'm wary about adding these new digests without actually testing them to make sure they're correct.

@AdamWill

Copy link
Copy Markdown
Author

Possibly by using this PPA. I can play around with it if I get time.

AFAIK github doesn't offer anything besides Ubuntu and Windows as hosted runners, so if you want to run on any other OS you have to self-host the runners, which is a whole thing.

@dstansby

Copy link
Copy Markdown
Contributor

It looks like there's a package on PyPI: https://pypi.org/project/zlib-ng/, so perhaps we could install that on Ubuntu and test the new digests using that?

@AdamWill

Copy link
Copy Markdown
Author

It's a bit confusing, but I think that's only python bindings. If you look at their CI, they install miniconda and then https://anaconda.org/conda-forge/zlib-ng to get zlib-ng itself before installing their own thing - https://github.com/pycompression/python-zlib-ng/blob/develop/.github/workflows/ci.yml#L120 . Presumably you'd also have to do that here. I kinda feel like using a PPA that replaces the system zlib seems more straightforward than doing that, but I haven't tried either way yet, tbf...

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch 2 times, most recently from e799e24 to af7d892CompareSeptember 6, 2024 22:02
@AdamWill

AdamWill commented Sep 6, 2024

Copy link
Copy Markdown
Author

huh, so it looks like we already have miniconda in our CI anyway so it should be fairly trivial to add a matrix dimension that tests with zlib-ng from miniconda - that's what I tried to do here - but GHA doesn't seem to be generating that matrix combination. not sure if it needs admin approval or something?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from af7d892 to caec68fCompareSeptember 6, 2024 22:20
@AdamWill

Copy link
Copy Markdown
Author

this is a slightly different way which should avoid a bit of a combinatorial explosion effect, but GHA still doesn't seem to pick up the change :/

@jhammanjhamman added the V2 Affects the v2 branch label Oct 11, 2024
@jhamman
jhamman changed the base branch from main to support/2.xOctober 11, 2024 23:38
@jhamman

Copy link
Copy Markdown
Member

I've moved the base branch of this PR to support/2.x in case there is interest in continuing this work.

@AdamWill

Copy link
Copy Markdown
Author

well, I don't know why GHA isn't picking up the test matrix change, and I'm not an admin so I can't really poke about much and find out. I'm a bit stuck there.

@QuLogic

Copy link
Copy Markdown
Contributor

I don't see any links to any workflow runs on the commit related to the changed file, so that suggests that perhaps there is a syntax error?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from caec68f to 21a0333CompareOctober 12, 2024 06:48
@AdamWill

Copy link
Copy Markdown
Author

hum, well, I did see one thing (I had condadeps as an array in one case but a string in the other, it should be a string in both I think). not sure if that was the issue, though. edited and rebased.

@QuLogic

Copy link
Copy Markdown
Contributor

This repo also has the stricter workflow approval setting enabled, so it's quite possible that that is interfering.

You may be able to confirm by pushing to main on your fork (and maybe confirming Actions settings in your fork).

@dstansby

Copy link
Copy Markdown
Contributor

Hmm, I'm not even getting the option to approve the workflow runs. Let me close and re-open this PR to see if that helps.

@dstansbydstansby reopened this Oct 13, 2024
@dstansbydstansby mentioned this pull request Oct 13, 2024
@dstansby

Copy link
Copy Markdown
Contributor

Ah, this is because we are in branch naming flux, and #2349 needs to get in before we can run actions on the v2 branch. Sorry about this, when it's working again I'll run the tests, and if they pass give this a merge. Thanks for the contribution and patience with us on this!

@jhamman

Copy link
Copy Markdown
Member

CI should be up and running again now.

@AdamWill

Copy link
Copy Markdown
Author

aaaagh merge commits, evil! i'll rebase.

@AdamWill

Copy link
Copy Markdown
Author

the merge-commit version actually seems wrong as it's badly merged (it'll cause python 3.13 with numpy 1.24 to be included, not excluded).

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 33fad90 to f586ec3CompareOctober 18, 2024 21:33
@dstansby

Copy link
Copy Markdown
Contributor

Sorry 🙈

@AdamWill

Copy link
Copy Markdown
Author

Ugh. https://github.com/zarr-developers/zarr-python/actions/runs/11411354019 . What the heck? Why can't I use an empty string?

I was trying to avoid duplicating 'pip nodejs' in the two places we define the conda deps string, but if we can't use an empty string in one place I don't see how :(

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from f586ec3 to 233c5b0CompareOctober 18, 2024 22:10
@QuLogic

Copy link
Copy Markdown
Contributor

It was right with the array, I think; as the matrix expands everything as the product of every list item. At least, all their examples use arrays, though none of them contain only a single item.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 233c5b0 to 71d01aeCompareOctober 18, 2024 22:56
@AdamWill

Copy link
Copy Markdown
Author

ok then, let's try them both as arrays...

…s#1678)
As explained in the issue, zlib-ng produces different hex digests
from original zlib. This adjusts the tests slightly to allow for
this.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 71d01ae to c544a50CompareOctober 20, 2024 15:37
@AdamWill

Copy link
Copy Markdown
Author

ugh. no. I'm pretty sure it was right the first time: first def is an array, second is a string. back to that.

@dstansbydstansby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks again for this, and sorry it's taken so long - I will merge if CI passes.

@dstansby
dstansby merged commit b00325e into zarr-developers:support/v2Jan 16, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

V2Affects the v2 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@AdamWill@d-v-b@QuLogic@dstansby@jhamman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

array tests: handle different hexdigests from zlib-ng (#1678) - #1972

Merged
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2
Jan 16, 2025
Merged

array tests: handle different hexdigests from zlib-ng (#1678)#1972
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2

Conversation

@AdamWill

Copy link
Copy Markdown

As explained in the issue, zlib-ng produces different hex digests from original zlib. This adjusts the tests slightly to allow for this.

TODO:

  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Removed TODO items are irrelevant as this only changes tests. This is more or less the same as #1971 , but for the main (v2) branch rather than v3 branch.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from d883b61 to b428945CompareJune 17, 2024 18:42
@AdamWillAdamWill changed the title v2 array tests: handle different hexdigests from zlib-ng (#1678)array tests: handle different hexdigests from zlib-ng (#1678)Jun 17, 2024
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from b428945 to 375bb63CompareJune 17, 2024 18:45
@AdamWill

Copy link
Copy Markdown
Author

If I run black on the changed file here locally it does indeed want to change a bunch of stuff, but none of it is stuff this PR touches - the issues already exist.

@AdamWillAdamWill mentioned this pull request Jun 17, 2024
@d-v-b

Copy link
Copy Markdown
Contributor

Thanks for the fix. For posterity, the ideal way to handle two different versions of zlib would be to condition the test case on the detected zlib version, but our test design makes that very tedious and not worth the effort. I think what you have done here is good!

@d-v-bd-v-b self-assigned this Jun 17, 2024
@d-v-b
d-v-b self-requested a review June 17, 2024 18:51
@d-v-b

Copy link
Copy Markdown
Contributor

we are seeing test failures due to numpy 2.0 I think

@AdamWill

Copy link
Copy Markdown
Author

yeah, it looks like numpy got some custom types. I guess you might need to do stuff like:

diff --git a/src/zarr/v2/core.py b/src/zarr/v2/core.py
index c1223dac..04da6749 100644
--- a/src/zarr/v2/core.py
+++ b/src/zarr/v2/core.py
@@ -759,7 +759,7 @@ class Array:
Retrieve a single item::
- >>> z.get_basic_selection(5)
+ >>> int(z.get_basic_selection(5))
5
Retrieve a region via slicing::

or something along those lines.

@QuLogic

Copy link
Copy Markdown
Contributor

I guess the NumPy stuff was fixed by #2073, so this might just need a rebase.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 375bb63 to d6aed0dCompareAugust 19, 2024 14:48
@AdamWill

Copy link
Copy Markdown
Author

Rebased.

@dstansby

Copy link
Copy Markdown
Contributor

Thanks for the PR - is there any way we can install zlib-ng and test against it in our continuous integration? I'm wary about adding these new digests without actually testing them to make sure they're correct.

@AdamWill

Copy link
Copy Markdown
Author

Possibly by using this PPA. I can play around with it if I get time.

AFAIK github doesn't offer anything besides Ubuntu and Windows as hosted runners, so if you want to run on any other OS you have to self-host the runners, which is a whole thing.

@dstansby

Copy link
Copy Markdown
Contributor

It looks like there's a package on PyPI: https://pypi.org/project/zlib-ng/, so perhaps we could install that on Ubuntu and test the new digests using that?

@AdamWill

Copy link
Copy Markdown
Author

It's a bit confusing, but I think that's only python bindings. If you look at their CI, they install miniconda and then https://anaconda.org/conda-forge/zlib-ng to get zlib-ng itself before installing their own thing - https://github.com/pycompression/python-zlib-ng/blob/develop/.github/workflows/ci.yml#L120 . Presumably you'd also have to do that here. I kinda feel like using a PPA that replaces the system zlib seems more straightforward than doing that, but I haven't tried either way yet, tbf...

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch 2 times, most recently from e799e24 to af7d892CompareSeptember 6, 2024 22:02
@AdamWill

AdamWill commented Sep 6, 2024

Copy link
Copy Markdown
Author

huh, so it looks like we already have miniconda in our CI anyway so it should be fairly trivial to add a matrix dimension that tests with zlib-ng from miniconda - that's what I tried to do here - but GHA doesn't seem to be generating that matrix combination. not sure if it needs admin approval or something?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from af7d892 to caec68fCompareSeptember 6, 2024 22:20
@AdamWill

Copy link
Copy Markdown
Author

this is a slightly different way which should avoid a bit of a combinatorial explosion effect, but GHA still doesn't seem to pick up the change :/

@jhammanjhamman added the V2 Affects the v2 branch label Oct 11, 2024
@jhamman
jhamman changed the base branch from main to support/2.xOctober 11, 2024 23:38
@jhamman

Copy link
Copy Markdown
Member

I've moved the base branch of this PR to support/2.x in case there is interest in continuing this work.

@AdamWill

Copy link
Copy Markdown
Author

well, I don't know why GHA isn't picking up the test matrix change, and I'm not an admin so I can't really poke about much and find out. I'm a bit stuck there.

@QuLogic

Copy link
Copy Markdown
Contributor

I don't see any links to any workflow runs on the commit related to the changed file, so that suggests that perhaps there is a syntax error?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from caec68f to 21a0333CompareOctober 12, 2024 06:48
@AdamWill

Copy link
Copy Markdown
Author

hum, well, I did see one thing (I had condadeps as an array in one case but a string in the other, it should be a string in both I think). not sure if that was the issue, though. edited and rebased.

@QuLogic

Copy link
Copy Markdown
Contributor

This repo also has the stricter workflow approval setting enabled, so it's quite possible that that is interfering.

You may be able to confirm by pushing to main on your fork (and maybe confirming Actions settings in your fork).

@dstansby

Copy link
Copy Markdown
Contributor

Hmm, I'm not even getting the option to approve the workflow runs. Let me close and re-open this PR to see if that helps.

@dstansbydstansby reopened this Oct 13, 2024
@dstansbydstansby mentioned this pull request Oct 13, 2024
@dstansby

Copy link
Copy Markdown
Contributor

Ah, this is because we are in branch naming flux, and #2349 needs to get in before we can run actions on the v2 branch. Sorry about this, when it's working again I'll run the tests, and if they pass give this a merge. Thanks for the contribution and patience with us on this!

@jhamman

Copy link
Copy Markdown
Member

CI should be up and running again now.

@AdamWill

Copy link
Copy Markdown
Author

aaaagh merge commits, evil! i'll rebase.

@AdamWill

Copy link
Copy Markdown
Author

the merge-commit version actually seems wrong as it's badly merged (it'll cause python 3.13 with numpy 1.24 to be included, not excluded).

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 33fad90 to f586ec3CompareOctober 18, 2024 21:33
@dstansby

Copy link
Copy Markdown
Contributor

Sorry 🙈

@AdamWill

Copy link
Copy Markdown
Author

Ugh. https://github.com/zarr-developers/zarr-python/actions/runs/11411354019 . What the heck? Why can't I use an empty string?

I was trying to avoid duplicating 'pip nodejs' in the two places we define the conda deps string, but if we can't use an empty string in one place I don't see how :(

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from f586ec3 to 233c5b0CompareOctober 18, 2024 22:10
@QuLogic

Copy link
Copy Markdown
Contributor

It was right with the array, I think; as the matrix expands everything as the product of every list item. At least, all their examples use arrays, though none of them contain only a single item.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 233c5b0 to 71d01aeCompareOctober 18, 2024 22:56
@AdamWill

Copy link
Copy Markdown
Author

ok then, let's try them both as arrays...

…s#1678)
As explained in the issue, zlib-ng produces different hex digests
from original zlib. This adjusts the tests slightly to allow for
this.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 71d01ae to c544a50CompareOctober 20, 2024 15:37
@AdamWill

Copy link
Copy Markdown
Author

ugh. no. I'm pretty sure it was right the first time: first def is an array, second is a string. back to that.

@dstansbydstansby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks again for this, and sorry it's taken so long - I will merge if CI passes.

@dstansby
dstansby merged commit b00325e into zarr-developers:support/v2Jan 16, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

V2Affects the v2 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@AdamWill@d-v-b@QuLogic@dstansby@jhamman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

array tests: handle different hexdigests from zlib-ng (#1678) - #1972

Merged
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2
Jan 16, 2025
Merged

array tests: handle different hexdigests from zlib-ng (#1678)#1972
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2

Conversation

@AdamWill

Copy link
Copy Markdown

As explained in the issue, zlib-ng produces different hex digests from original zlib. This adjusts the tests slightly to allow for this.

TODO:

  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Removed TODO items are irrelevant as this only changes tests. This is more or less the same as #1971 , but for the main (v2) branch rather than v3 branch.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from d883b61 to b428945CompareJune 17, 2024 18:42
@AdamWillAdamWill changed the title v2 array tests: handle different hexdigests from zlib-ng (#1678)array tests: handle different hexdigests from zlib-ng (#1678)Jun 17, 2024
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from b428945 to 375bb63CompareJune 17, 2024 18:45
@AdamWill

Copy link
Copy Markdown
Author

If I run black on the changed file here locally it does indeed want to change a bunch of stuff, but none of it is stuff this PR touches - the issues already exist.

@AdamWillAdamWill mentioned this pull request Jun 17, 2024
@d-v-b

Copy link
Copy Markdown
Contributor

Thanks for the fix. For posterity, the ideal way to handle two different versions of zlib would be to condition the test case on the detected zlib version, but our test design makes that very tedious and not worth the effort. I think what you have done here is good!

@d-v-bd-v-b self-assigned this Jun 17, 2024
@d-v-b
d-v-b self-requested a review June 17, 2024 18:51
@d-v-b

Copy link
Copy Markdown
Contributor

we are seeing test failures due to numpy 2.0 I think

@AdamWill

Copy link
Copy Markdown
Author

yeah, it looks like numpy got some custom types. I guess you might need to do stuff like:

diff --git a/src/zarr/v2/core.py b/src/zarr/v2/core.py
index c1223dac..04da6749 100644
--- a/src/zarr/v2/core.py
+++ b/src/zarr/v2/core.py
@@ -759,7 +759,7 @@ class Array:
Retrieve a single item::
- >>> z.get_basic_selection(5)
+ >>> int(z.get_basic_selection(5))
5
Retrieve a region via slicing::

or something along those lines.

@QuLogic

Copy link
Copy Markdown
Contributor

I guess the NumPy stuff was fixed by #2073, so this might just need a rebase.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 375bb63 to d6aed0dCompareAugust 19, 2024 14:48
@AdamWill

Copy link
Copy Markdown
Author

Rebased.

@dstansby

Copy link
Copy Markdown
Contributor

Thanks for the PR - is there any way we can install zlib-ng and test against it in our continuous integration? I'm wary about adding these new digests without actually testing them to make sure they're correct.

@AdamWill

Copy link
Copy Markdown
Author

Possibly by using this PPA. I can play around with it if I get time.

AFAIK github doesn't offer anything besides Ubuntu and Windows as hosted runners, so if you want to run on any other OS you have to self-host the runners, which is a whole thing.

@dstansby

Copy link
Copy Markdown
Contributor

It looks like there's a package on PyPI: https://pypi.org/project/zlib-ng/, so perhaps we could install that on Ubuntu and test the new digests using that?

@AdamWill

Copy link
Copy Markdown
Author

It's a bit confusing, but I think that's only python bindings. If you look at their CI, they install miniconda and then https://anaconda.org/conda-forge/zlib-ng to get zlib-ng itself before installing their own thing - https://github.com/pycompression/python-zlib-ng/blob/develop/.github/workflows/ci.yml#L120 . Presumably you'd also have to do that here. I kinda feel like using a PPA that replaces the system zlib seems more straightforward than doing that, but I haven't tried either way yet, tbf...

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch 2 times, most recently from e799e24 to af7d892CompareSeptember 6, 2024 22:02
@AdamWill

AdamWill commented Sep 6, 2024

Copy link
Copy Markdown
Author

huh, so it looks like we already have miniconda in our CI anyway so it should be fairly trivial to add a matrix dimension that tests with zlib-ng from miniconda - that's what I tried to do here - but GHA doesn't seem to be generating that matrix combination. not sure if it needs admin approval or something?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from af7d892 to caec68fCompareSeptember 6, 2024 22:20
@AdamWill

Copy link
Copy Markdown
Author

this is a slightly different way which should avoid a bit of a combinatorial explosion effect, but GHA still doesn't seem to pick up the change :/

@jhammanjhamman added the V2 Affects the v2 branch label Oct 11, 2024
@jhamman
jhamman changed the base branch from main to support/2.xOctober 11, 2024 23:38
@jhamman

Copy link
Copy Markdown
Member

I've moved the base branch of this PR to support/2.x in case there is interest in continuing this work.

@AdamWill

Copy link
Copy Markdown
Author

well, I don't know why GHA isn't picking up the test matrix change, and I'm not an admin so I can't really poke about much and find out. I'm a bit stuck there.

@QuLogic

Copy link
Copy Markdown
Contributor

I don't see any links to any workflow runs on the commit related to the changed file, so that suggests that perhaps there is a syntax error?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from caec68f to 21a0333CompareOctober 12, 2024 06:48
@AdamWill

Copy link
Copy Markdown
Author

hum, well, I did see one thing (I had condadeps as an array in one case but a string in the other, it should be a string in both I think). not sure if that was the issue, though. edited and rebased.

@QuLogic

Copy link
Copy Markdown
Contributor

This repo also has the stricter workflow approval setting enabled, so it's quite possible that that is interfering.

You may be able to confirm by pushing to main on your fork (and maybe confirming Actions settings in your fork).

@dstansby

Copy link
Copy Markdown
Contributor

Hmm, I'm not even getting the option to approve the workflow runs. Let me close and re-open this PR to see if that helps.

@dstansbydstansby reopened this Oct 13, 2024
@dstansbydstansby mentioned this pull request Oct 13, 2024
@dstansby

Copy link
Copy Markdown
Contributor

Ah, this is because we are in branch naming flux, and #2349 needs to get in before we can run actions on the v2 branch. Sorry about this, when it's working again I'll run the tests, and if they pass give this a merge. Thanks for the contribution and patience with us on this!

@jhamman

Copy link
Copy Markdown
Member

CI should be up and running again now.

@AdamWill

Copy link
Copy Markdown
Author

aaaagh merge commits, evil! i'll rebase.

@AdamWill

Copy link
Copy Markdown
Author

the merge-commit version actually seems wrong as it's badly merged (it'll cause python 3.13 with numpy 1.24 to be included, not excluded).

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 33fad90 to f586ec3CompareOctober 18, 2024 21:33
@dstansby

Copy link
Copy Markdown
Contributor

Sorry 🙈

@AdamWill

Copy link
Copy Markdown
Author

Ugh. https://github.com/zarr-developers/zarr-python/actions/runs/11411354019 . What the heck? Why can't I use an empty string?

I was trying to avoid duplicating 'pip nodejs' in the two places we define the conda deps string, but if we can't use an empty string in one place I don't see how :(

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from f586ec3 to 233c5b0CompareOctober 18, 2024 22:10
@QuLogic

Copy link
Copy Markdown
Contributor

It was right with the array, I think; as the matrix expands everything as the product of every list item. At least, all their examples use arrays, though none of them contain only a single item.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 233c5b0 to 71d01aeCompareOctober 18, 2024 22:56
@AdamWill

Copy link
Copy Markdown
Author

ok then, let's try them both as arrays...

…s#1678)
As explained in the issue, zlib-ng produces different hex digests
from original zlib. This adjusts the tests slightly to allow for
this.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 71d01ae to c544a50CompareOctober 20, 2024 15:37
@AdamWill

Copy link
Copy Markdown
Author

ugh. no. I'm pretty sure it was right the first time: first def is an array, second is a string. back to that.

@dstansbydstansby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks again for this, and sorry it's taken so long - I will merge if CI passes.

@dstansby
dstansby merged commit b00325e into zarr-developers:support/v2Jan 16, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

V2Affects the v2 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@AdamWill@d-v-b@QuLogic@dstansby@jhamman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

array tests: handle different hexdigests from zlib-ng (#1678) - #1972

Merged
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2
Jan 16, 2025
Merged

array tests: handle different hexdigests from zlib-ng (#1678)#1972
dstansby merged 2 commits into
zarr-developers:support/v2from
AdamWill:array-hexdigest-zlibng-v2

Conversation

@AdamWill

Copy link
Copy Markdown

As explained in the issue, zlib-ng produces different hex digests from original zlib. This adjusts the tests slightly to allow for this.

TODO:

  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Removed TODO items are irrelevant as this only changes tests. This is more or less the same as #1971 , but for the main (v2) branch rather than v3 branch.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from d883b61 to b428945CompareJune 17, 2024 18:42
@AdamWillAdamWill changed the title v2 array tests: handle different hexdigests from zlib-ng (#1678)array tests: handle different hexdigests from zlib-ng (#1678)Jun 17, 2024
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from b428945 to 375bb63CompareJune 17, 2024 18:45
@AdamWill

Copy link
Copy Markdown
Author

If I run black on the changed file here locally it does indeed want to change a bunch of stuff, but none of it is stuff this PR touches - the issues already exist.

@AdamWillAdamWill mentioned this pull request Jun 17, 2024
@d-v-b

Copy link
Copy Markdown
Contributor

Thanks for the fix. For posterity, the ideal way to handle two different versions of zlib would be to condition the test case on the detected zlib version, but our test design makes that very tedious and not worth the effort. I think what you have done here is good!

@d-v-bd-v-b self-assigned this Jun 17, 2024
@d-v-b
d-v-b self-requested a review June 17, 2024 18:51
@d-v-b

Copy link
Copy Markdown
Contributor

we are seeing test failures due to numpy 2.0 I think

@AdamWill

Copy link
Copy Markdown
Author

yeah, it looks like numpy got some custom types. I guess you might need to do stuff like:

diff --git a/src/zarr/v2/core.py b/src/zarr/v2/core.py
index c1223dac..04da6749 100644
--- a/src/zarr/v2/core.py
+++ b/src/zarr/v2/core.py
@@ -759,7 +759,7 @@ class Array:
Retrieve a single item::
- >>> z.get_basic_selection(5)
+ >>> int(z.get_basic_selection(5))
5
Retrieve a region via slicing::

or something along those lines.

@QuLogic

Copy link
Copy Markdown
Contributor

I guess the NumPy stuff was fixed by #2073, so this might just need a rebase.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 375bb63 to d6aed0dCompareAugust 19, 2024 14:48
@AdamWill

Copy link
Copy Markdown
Author

Rebased.

@dstansby

Copy link
Copy Markdown
Contributor

Thanks for the PR - is there any way we can install zlib-ng and test against it in our continuous integration? I'm wary about adding these new digests without actually testing them to make sure they're correct.

@AdamWill

Copy link
Copy Markdown
Author

Possibly by using this PPA. I can play around with it if I get time.

AFAIK github doesn't offer anything besides Ubuntu and Windows as hosted runners, so if you want to run on any other OS you have to self-host the runners, which is a whole thing.

@dstansby

Copy link
Copy Markdown
Contributor

It looks like there's a package on PyPI: https://pypi.org/project/zlib-ng/, so perhaps we could install that on Ubuntu and test the new digests using that?

@AdamWill

Copy link
Copy Markdown
Author

It's a bit confusing, but I think that's only python bindings. If you look at their CI, they install miniconda and then https://anaconda.org/conda-forge/zlib-ng to get zlib-ng itself before installing their own thing - https://github.com/pycompression/python-zlib-ng/blob/develop/.github/workflows/ci.yml#L120 . Presumably you'd also have to do that here. I kinda feel like using a PPA that replaces the system zlib seems more straightforward than doing that, but I haven't tried either way yet, tbf...

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch 2 times, most recently from e799e24 to af7d892CompareSeptember 6, 2024 22:02
@AdamWill

AdamWill commented Sep 6, 2024

Copy link
Copy Markdown
Author

huh, so it looks like we already have miniconda in our CI anyway so it should be fairly trivial to add a matrix dimension that tests with zlib-ng from miniconda - that's what I tried to do here - but GHA doesn't seem to be generating that matrix combination. not sure if it needs admin approval or something?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from af7d892 to caec68fCompareSeptember 6, 2024 22:20
@AdamWill

Copy link
Copy Markdown
Author

this is a slightly different way which should avoid a bit of a combinatorial explosion effect, but GHA still doesn't seem to pick up the change :/

@jhammanjhamman added the V2 Affects the v2 branch label Oct 11, 2024
@jhamman
jhamman changed the base branch from main to support/2.xOctober 11, 2024 23:38
@jhamman

Copy link
Copy Markdown
Member

I've moved the base branch of this PR to support/2.x in case there is interest in continuing this work.

@AdamWill

Copy link
Copy Markdown
Author

well, I don't know why GHA isn't picking up the test matrix change, and I'm not an admin so I can't really poke about much and find out. I'm a bit stuck there.

@QuLogic

Copy link
Copy Markdown
Contributor

I don't see any links to any workflow runs on the commit related to the changed file, so that suggests that perhaps there is a syntax error?

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from caec68f to 21a0333CompareOctober 12, 2024 06:48
@AdamWill

Copy link
Copy Markdown
Author

hum, well, I did see one thing (I had condadeps as an array in one case but a string in the other, it should be a string in both I think). not sure if that was the issue, though. edited and rebased.

@QuLogic

Copy link
Copy Markdown
Contributor

This repo also has the stricter workflow approval setting enabled, so it's quite possible that that is interfering.

You may be able to confirm by pushing to main on your fork (and maybe confirming Actions settings in your fork).

@dstansby

Copy link
Copy Markdown
Contributor

Hmm, I'm not even getting the option to approve the workflow runs. Let me close and re-open this PR to see if that helps.

@dstansbydstansby reopened this Oct 13, 2024
@dstansbydstansby mentioned this pull request Oct 13, 2024
@dstansby

Copy link
Copy Markdown
Contributor

Ah, this is because we are in branch naming flux, and #2349 needs to get in before we can run actions on the v2 branch. Sorry about this, when it's working again I'll run the tests, and if they pass give this a merge. Thanks for the contribution and patience with us on this!

@jhamman

Copy link
Copy Markdown
Member

CI should be up and running again now.

@AdamWill

Copy link
Copy Markdown
Author

aaaagh merge commits, evil! i'll rebase.

@AdamWill

Copy link
Copy Markdown
Author

the merge-commit version actually seems wrong as it's badly merged (it'll cause python 3.13 with numpy 1.24 to be included, not excluded).

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 33fad90 to f586ec3CompareOctober 18, 2024 21:33
@dstansby

Copy link
Copy Markdown
Contributor

Sorry 🙈

@AdamWill

Copy link
Copy Markdown
Author

Ugh. https://github.com/zarr-developers/zarr-python/actions/runs/11411354019 . What the heck? Why can't I use an empty string?

I was trying to avoid duplicating 'pip nodejs' in the two places we define the conda deps string, but if we can't use an empty string in one place I don't see how :(

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from f586ec3 to 233c5b0CompareOctober 18, 2024 22:10
@QuLogic

Copy link
Copy Markdown
Contributor

It was right with the array, I think; as the matrix expands everything as the product of every list item. At least, all their examples use arrays, though none of them contain only a single item.

@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 233c5b0 to 71d01aeCompareOctober 18, 2024 22:56
@AdamWill

Copy link
Copy Markdown
Author

ok then, let's try them both as arrays...

…s#1678)
As explained in the issue, zlib-ng produces different hex digests
from original zlib. This adjusts the tests slightly to allow for
this.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
@AdamWill
AdamWillforce-pushed the array-hexdigest-zlibng-v2 branch from 71d01ae to c544a50CompareOctober 20, 2024 15:37
@AdamWill

Copy link
Copy Markdown
Author

ugh. no. I'm pretty sure it was right the first time: first def is an array, second is a string. back to that.

@dstansbydstansby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks again for this, and sorry it's taken so long - I will merge if CI passes.

@dstansby
dstansby merged commit b00325e into zarr-developers:support/v2Jan 16, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

V2Affects the v2 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@AdamWill@d-v-b@QuLogic@dstansby@jhamman