Cast fill value to array's dtype - #2020

Merged
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value
Jul 10, 2024
Merged

Cast fill value to array's dtype#2020
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value

Conversation

@d-v-b

@d-v-bd-v-b commented Jul 9, 2024

Copy link
Copy Markdown
Contributor

In v3 right now, we don't apply any parsing or validation to the fill_value attribute of an array. This PR fixes that.

In this PR, the fill_value is cast to an instance of the array's dtype, using normal numpy dtype casting semantics. I also added JSON serialization for complex dtypes, but this is not tested yet. I will add those tests as part of a later refactor of the metadata tests.

For v2 arrays, I am importing the v2 fill value parsing function and wrapping it in a very light wrapper. This preserves all the v2 behavior.

I also added a fill_value attribute to the Array class. Happy to remove this if it's not supposed to be there.

I put the metadata tests in a new directory structure: tests/v3/metadata/test_v2.py for v2 stuff and tests/v3/metadata/test_v3.py for v3 stuff. This keeps the v2 and v3 logic separated, and removes the need to name functions test_foo_v3 and the like. We should ultimately use an analogous layout in the library code.

Longer term we should support the raw bits datatypes defined in the zarr v3 spec, but I don't think we need that now.

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
d-v-b requested review from jhamman and normanrzJuly 9, 2024 14:57
Comment threadtests/v3/test_metadata/test_v3.py Outdated

@normanrznormanrz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great work!

@d-v-b
d-v-b merged commit b8baa68 into zarr-developers:v3Jul 10, 2024
@d-v-b
d-v-b deleted the cast_fill_value branch July 10, 2024 15:39
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jul 25, 2024
* v3: (22 commits)
chore: update pre-commit hooks (zarr-developers#2051)
Apply ruff/flake8-bandit rule B006 (zarr-developers#2049)
Move fixtures to `tests` (zarr-developers#1813)
Multiple imports for an import name (zarr-developers#2047)
Redundant list comprehension (zarr-developers#2048)
chore: update pre-commit hooks (zarr-developers#2039)
Cast fill value to array's dtype (zarr-developers#2020)
chore: update pre-commit hooks (zarr-developers#2017)
make shardingcodec pickleable (zarr-developers#2011)
doc: copy 3.0.0.alpha changelog into release.rst (zarr-developers#2007)
build(ci): enable python 3.12 in github actions (zarr-developers#2005)
Bump NumPy to 2.0 (zarr-developers#1983)
chore: update pre-commit hooks (zarr-developers#1989)
Fix indexing with bools (zarr-developers#1968)
Fix string interpolation (zarr-developers#1998)
Unnecessary comprehension (zarr-developers#1997)
Stop ignoring these ruff rules (zarr-developers#2001)
Merge collapsible if statements (zarr-developers#1999)
Unnecessary comprehension (zarr-developers#1996)
Handle Path in `make_store_path` (zarr-developers#1992)
...
@dcheriandcherian mentioned this pull request Jul 25, 2024
6 tasks
Sign up for freeto 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

@d-v-b@normanrz
, '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

Cast fill value to array's dtype - #2020

Merged
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value
Jul 10, 2024
Merged

Cast fill value to array's dtype#2020
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value

Conversation

@d-v-b

@d-v-bd-v-b commented Jul 9, 2024

Copy link
Copy Markdown
Contributor

In v3 right now, we don't apply any parsing or validation to the fill_value attribute of an array. This PR fixes that.

In this PR, the fill_value is cast to an instance of the array's dtype, using normal numpy dtype casting semantics. I also added JSON serialization for complex dtypes, but this is not tested yet. I will add those tests as part of a later refactor of the metadata tests.

For v2 arrays, I am importing the v2 fill value parsing function and wrapping it in a very light wrapper. This preserves all the v2 behavior.

I also added a fill_value attribute to the Array class. Happy to remove this if it's not supposed to be there.

I put the metadata tests in a new directory structure: tests/v3/metadata/test_v2.py for v2 stuff and tests/v3/metadata/test_v3.py for v3 stuff. This keeps the v2 and v3 logic separated, and removes the need to name functions test_foo_v3 and the like. We should ultimately use an analogous layout in the library code.

Longer term we should support the raw bits datatypes defined in the zarr v3 spec, but I don't think we need that now.

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
d-v-b requested review from jhamman and normanrzJuly 9, 2024 14:57
Comment threadtests/v3/test_metadata/test_v3.py Outdated

@normanrznormanrz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great work!

@d-v-b
d-v-b merged commit b8baa68 into zarr-developers:v3Jul 10, 2024
@d-v-b
d-v-b deleted the cast_fill_value branch July 10, 2024 15:39
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jul 25, 2024
* v3: (22 commits)
chore: update pre-commit hooks (zarr-developers#2051)
Apply ruff/flake8-bandit rule B006 (zarr-developers#2049)
Move fixtures to `tests` (zarr-developers#1813)
Multiple imports for an import name (zarr-developers#2047)
Redundant list comprehension (zarr-developers#2048)
chore: update pre-commit hooks (zarr-developers#2039)
Cast fill value to array's dtype (zarr-developers#2020)
chore: update pre-commit hooks (zarr-developers#2017)
make shardingcodec pickleable (zarr-developers#2011)
doc: copy 3.0.0.alpha changelog into release.rst (zarr-developers#2007)
build(ci): enable python 3.12 in github actions (zarr-developers#2005)
Bump NumPy to 2.0 (zarr-developers#1983)
chore: update pre-commit hooks (zarr-developers#1989)
Fix indexing with bools (zarr-developers#1968)
Fix string interpolation (zarr-developers#1998)
Unnecessary comprehension (zarr-developers#1997)
Stop ignoring these ruff rules (zarr-developers#2001)
Merge collapsible if statements (zarr-developers#1999)
Unnecessary comprehension (zarr-developers#1996)
Handle Path in `make_store_path` (zarr-developers#1992)
...
@dcheriandcherian mentioned this pull request Jul 25, 2024
6 tasks
Sign up for freeto 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

@d-v-b@normanrz
, '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

Cast fill value to array's dtype - #2020

Merged
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value
Jul 10, 2024
Merged

Cast fill value to array's dtype#2020
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value

Conversation

@d-v-b

@d-v-bd-v-b commented Jul 9, 2024

Copy link
Copy Markdown
Contributor

In v3 right now, we don't apply any parsing or validation to the fill_value attribute of an array. This PR fixes that.

In this PR, the fill_value is cast to an instance of the array's dtype, using normal numpy dtype casting semantics. I also added JSON serialization for complex dtypes, but this is not tested yet. I will add those tests as part of a later refactor of the metadata tests.

For v2 arrays, I am importing the v2 fill value parsing function and wrapping it in a very light wrapper. This preserves all the v2 behavior.

I also added a fill_value attribute to the Array class. Happy to remove this if it's not supposed to be there.

I put the metadata tests in a new directory structure: tests/v3/metadata/test_v2.py for v2 stuff and tests/v3/metadata/test_v3.py for v3 stuff. This keeps the v2 and v3 logic separated, and removes the need to name functions test_foo_v3 and the like. We should ultimately use an analogous layout in the library code.

Longer term we should support the raw bits datatypes defined in the zarr v3 spec, but I don't think we need that now.

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
d-v-b requested review from jhamman and normanrzJuly 9, 2024 14:57
Comment threadtests/v3/test_metadata/test_v3.py Outdated

@normanrznormanrz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great work!

@d-v-b
d-v-b merged commit b8baa68 into zarr-developers:v3Jul 10, 2024
@d-v-b
d-v-b deleted the cast_fill_value branch July 10, 2024 15:39
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jul 25, 2024
* v3: (22 commits)
chore: update pre-commit hooks (zarr-developers#2051)
Apply ruff/flake8-bandit rule B006 (zarr-developers#2049)
Move fixtures to `tests` (zarr-developers#1813)
Multiple imports for an import name (zarr-developers#2047)
Redundant list comprehension (zarr-developers#2048)
chore: update pre-commit hooks (zarr-developers#2039)
Cast fill value to array's dtype (zarr-developers#2020)
chore: update pre-commit hooks (zarr-developers#2017)
make shardingcodec pickleable (zarr-developers#2011)
doc: copy 3.0.0.alpha changelog into release.rst (zarr-developers#2007)
build(ci): enable python 3.12 in github actions (zarr-developers#2005)
Bump NumPy to 2.0 (zarr-developers#1983)
chore: update pre-commit hooks (zarr-developers#1989)
Fix indexing with bools (zarr-developers#1968)
Fix string interpolation (zarr-developers#1998)
Unnecessary comprehension (zarr-developers#1997)
Stop ignoring these ruff rules (zarr-developers#2001)
Merge collapsible if statements (zarr-developers#1999)
Unnecessary comprehension (zarr-developers#1996)
Handle Path in `make_store_path` (zarr-developers#1992)
...
@dcheriandcherian mentioned this pull request Jul 25, 2024
6 tasks
Sign up for freeto 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

@d-v-b@normanrz
, '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

Cast fill value to array's dtype - #2020

Merged
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value
Jul 10, 2024
Merged

Cast fill value to array's dtype#2020
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value

Conversation

@d-v-b

@d-v-bd-v-b commented Jul 9, 2024

Copy link
Copy Markdown
Contributor

In v3 right now, we don't apply any parsing or validation to the fill_value attribute of an array. This PR fixes that.

In this PR, the fill_value is cast to an instance of the array's dtype, using normal numpy dtype casting semantics. I also added JSON serialization for complex dtypes, but this is not tested yet. I will add those tests as part of a later refactor of the metadata tests.

For v2 arrays, I am importing the v2 fill value parsing function and wrapping it in a very light wrapper. This preserves all the v2 behavior.

I also added a fill_value attribute to the Array class. Happy to remove this if it's not supposed to be there.

I put the metadata tests in a new directory structure: tests/v3/metadata/test_v2.py for v2 stuff and tests/v3/metadata/test_v3.py for v3 stuff. This keeps the v2 and v3 logic separated, and removes the need to name functions test_foo_v3 and the like. We should ultimately use an analogous layout in the library code.

Longer term we should support the raw bits datatypes defined in the zarr v3 spec, but I don't think we need that now.

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
d-v-b requested review from jhamman and normanrzJuly 9, 2024 14:57
Comment threadtests/v3/test_metadata/test_v3.py Outdated

@normanrznormanrz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great work!

@d-v-b
d-v-b merged commit b8baa68 into zarr-developers:v3Jul 10, 2024
@d-v-b
d-v-b deleted the cast_fill_value branch July 10, 2024 15:39
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jul 25, 2024
* v3: (22 commits)
chore: update pre-commit hooks (zarr-developers#2051)
Apply ruff/flake8-bandit rule B006 (zarr-developers#2049)
Move fixtures to `tests` (zarr-developers#1813)
Multiple imports for an import name (zarr-developers#2047)
Redundant list comprehension (zarr-developers#2048)
chore: update pre-commit hooks (zarr-developers#2039)
Cast fill value to array's dtype (zarr-developers#2020)
chore: update pre-commit hooks (zarr-developers#2017)
make shardingcodec pickleable (zarr-developers#2011)
doc: copy 3.0.0.alpha changelog into release.rst (zarr-developers#2007)
build(ci): enable python 3.12 in github actions (zarr-developers#2005)
Bump NumPy to 2.0 (zarr-developers#1983)
chore: update pre-commit hooks (zarr-developers#1989)
Fix indexing with bools (zarr-developers#1968)
Fix string interpolation (zarr-developers#1998)
Unnecessary comprehension (zarr-developers#1997)
Stop ignoring these ruff rules (zarr-developers#2001)
Merge collapsible if statements (zarr-developers#1999)
Unnecessary comprehension (zarr-developers#1996)
Handle Path in `make_store_path` (zarr-developers#1992)
...
@dcheriandcherian mentioned this pull request Jul 25, 2024
6 tasks
Sign up for freeto 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

@d-v-b@normanrz
, '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

Cast fill value to array's dtype - #2020

Merged
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value
Jul 10, 2024
Merged

Cast fill value to array's dtype#2020
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value

Conversation

@d-v-b

@d-v-bd-v-b commented Jul 9, 2024

Copy link
Copy Markdown
Contributor

In v3 right now, we don't apply any parsing or validation to the fill_value attribute of an array. This PR fixes that.

In this PR, the fill_value is cast to an instance of the array's dtype, using normal numpy dtype casting semantics. I also added JSON serialization for complex dtypes, but this is not tested yet. I will add those tests as part of a later refactor of the metadata tests.

For v2 arrays, I am importing the v2 fill value parsing function and wrapping it in a very light wrapper. This preserves all the v2 behavior.

I also added a fill_value attribute to the Array class. Happy to remove this if it's not supposed to be there.

I put the metadata tests in a new directory structure: tests/v3/metadata/test_v2.py for v2 stuff and tests/v3/metadata/test_v3.py for v3 stuff. This keeps the v2 and v3 logic separated, and removes the need to name functions test_foo_v3 and the like. We should ultimately use an analogous layout in the library code.

Longer term we should support the raw bits datatypes defined in the zarr v3 spec, but I don't think we need that now.

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
d-v-b requested review from jhamman and normanrzJuly 9, 2024 14:57
Comment threadtests/v3/test_metadata/test_v3.py Outdated

@normanrznormanrz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great work!

@d-v-b
d-v-b merged commit b8baa68 into zarr-developers:v3Jul 10, 2024
@d-v-b
d-v-b deleted the cast_fill_value branch July 10, 2024 15:39
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jul 25, 2024
* v3: (22 commits)
chore: update pre-commit hooks (zarr-developers#2051)
Apply ruff/flake8-bandit rule B006 (zarr-developers#2049)
Move fixtures to `tests` (zarr-developers#1813)
Multiple imports for an import name (zarr-developers#2047)
Redundant list comprehension (zarr-developers#2048)
chore: update pre-commit hooks (zarr-developers#2039)
Cast fill value to array's dtype (zarr-developers#2020)
chore: update pre-commit hooks (zarr-developers#2017)
make shardingcodec pickleable (zarr-developers#2011)
doc: copy 3.0.0.alpha changelog into release.rst (zarr-developers#2007)
build(ci): enable python 3.12 in github actions (zarr-developers#2005)
Bump NumPy to 2.0 (zarr-developers#1983)
chore: update pre-commit hooks (zarr-developers#1989)
Fix indexing with bools (zarr-developers#1968)
Fix string interpolation (zarr-developers#1998)
Unnecessary comprehension (zarr-developers#1997)
Stop ignoring these ruff rules (zarr-developers#2001)
Merge collapsible if statements (zarr-developers#1999)
Unnecessary comprehension (zarr-developers#1996)
Handle Path in `make_store_path` (zarr-developers#1992)
...
@dcheriandcherian mentioned this pull request Jul 25, 2024
6 tasks
Sign up for freeto 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

@d-v-b@normanrz
, '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

Cast fill value to array's dtype - #2020

Merged
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value
Jul 10, 2024
Merged

Cast fill value to array's dtype#2020
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value

Conversation

@d-v-b

@d-v-bd-v-b commented Jul 9, 2024

Copy link
Copy Markdown
Contributor

In v3 right now, we don't apply any parsing or validation to the fill_value attribute of an array. This PR fixes that.

In this PR, the fill_value is cast to an instance of the array's dtype, using normal numpy dtype casting semantics. I also added JSON serialization for complex dtypes, but this is not tested yet. I will add those tests as part of a later refactor of the metadata tests.

For v2 arrays, I am importing the v2 fill value parsing function and wrapping it in a very light wrapper. This preserves all the v2 behavior.

I also added a fill_value attribute to the Array class. Happy to remove this if it's not supposed to be there.

I put the metadata tests in a new directory structure: tests/v3/metadata/test_v2.py for v2 stuff and tests/v3/metadata/test_v3.py for v3 stuff. This keeps the v2 and v3 logic separated, and removes the need to name functions test_foo_v3 and the like. We should ultimately use an analogous layout in the library code.

Longer term we should support the raw bits datatypes defined in the zarr v3 spec, but I don't think we need that now.

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
d-v-b requested review from jhamman and normanrzJuly 9, 2024 14:57
Comment threadtests/v3/test_metadata/test_v3.py Outdated

@normanrznormanrz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great work!

@d-v-b
d-v-b merged commit b8baa68 into zarr-developers:v3Jul 10, 2024
@d-v-b
d-v-b deleted the cast_fill_value branch July 10, 2024 15:39
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jul 25, 2024
* v3: (22 commits)
chore: update pre-commit hooks (zarr-developers#2051)
Apply ruff/flake8-bandit rule B006 (zarr-developers#2049)
Move fixtures to `tests` (zarr-developers#1813)
Multiple imports for an import name (zarr-developers#2047)
Redundant list comprehension (zarr-developers#2048)
chore: update pre-commit hooks (zarr-developers#2039)
Cast fill value to array's dtype (zarr-developers#2020)
chore: update pre-commit hooks (zarr-developers#2017)
make shardingcodec pickleable (zarr-developers#2011)
doc: copy 3.0.0.alpha changelog into release.rst (zarr-developers#2007)
build(ci): enable python 3.12 in github actions (zarr-developers#2005)
Bump NumPy to 2.0 (zarr-developers#1983)
chore: update pre-commit hooks (zarr-developers#1989)
Fix indexing with bools (zarr-developers#1968)
Fix string interpolation (zarr-developers#1998)
Unnecessary comprehension (zarr-developers#1997)
Stop ignoring these ruff rules (zarr-developers#2001)
Merge collapsible if statements (zarr-developers#1999)
Unnecessary comprehension (zarr-developers#1996)
Handle Path in `make_store_path` (zarr-developers#1992)
...
@dcheriandcherian mentioned this pull request Jul 25, 2024
6 tasks
Sign up for freeto 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

@d-v-b@normanrz
, '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

Cast fill value to array's dtype - #2020

Merged
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value
Jul 10, 2024
Merged

Cast fill value to array's dtype#2020
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value

Conversation

@d-v-b

@d-v-bd-v-b commented Jul 9, 2024

Copy link
Copy Markdown
Contributor

In v3 right now, we don't apply any parsing or validation to the fill_value attribute of an array. This PR fixes that.

In this PR, the fill_value is cast to an instance of the array's dtype, using normal numpy dtype casting semantics. I also added JSON serialization for complex dtypes, but this is not tested yet. I will add those tests as part of a later refactor of the metadata tests.

For v2 arrays, I am importing the v2 fill value parsing function and wrapping it in a very light wrapper. This preserves all the v2 behavior.

I also added a fill_value attribute to the Array class. Happy to remove this if it's not supposed to be there.

I put the metadata tests in a new directory structure: tests/v3/metadata/test_v2.py for v2 stuff and tests/v3/metadata/test_v3.py for v3 stuff. This keeps the v2 and v3 logic separated, and removes the need to name functions test_foo_v3 and the like. We should ultimately use an analogous layout in the library code.

Longer term we should support the raw bits datatypes defined in the zarr v3 spec, but I don't think we need that now.

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
d-v-b requested review from jhamman and normanrzJuly 9, 2024 14:57
Comment threadtests/v3/test_metadata/test_v3.py Outdated

@normanrznormanrz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great work!

@d-v-b
d-v-b merged commit b8baa68 into zarr-developers:v3Jul 10, 2024
@d-v-b
d-v-b deleted the cast_fill_value branch July 10, 2024 15:39
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jul 25, 2024
* v3: (22 commits)
chore: update pre-commit hooks (zarr-developers#2051)
Apply ruff/flake8-bandit rule B006 (zarr-developers#2049)
Move fixtures to `tests` (zarr-developers#1813)
Multiple imports for an import name (zarr-developers#2047)
Redundant list comprehension (zarr-developers#2048)
chore: update pre-commit hooks (zarr-developers#2039)
Cast fill value to array's dtype (zarr-developers#2020)
chore: update pre-commit hooks (zarr-developers#2017)
make shardingcodec pickleable (zarr-developers#2011)
doc: copy 3.0.0.alpha changelog into release.rst (zarr-developers#2007)
build(ci): enable python 3.12 in github actions (zarr-developers#2005)
Bump NumPy to 2.0 (zarr-developers#1983)
chore: update pre-commit hooks (zarr-developers#1989)
Fix indexing with bools (zarr-developers#1968)
Fix string interpolation (zarr-developers#1998)
Unnecessary comprehension (zarr-developers#1997)
Stop ignoring these ruff rules (zarr-developers#2001)
Merge collapsible if statements (zarr-developers#1999)
Unnecessary comprehension (zarr-developers#1996)
Handle Path in `make_store_path` (zarr-developers#1992)
...
@dcheriandcherian mentioned this pull request Jul 25, 2024
6 tasks
Sign up for freeto 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

@d-v-b@normanrz
, '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

Cast fill value to array's dtype - #2020

Merged
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value
Jul 10, 2024
Merged

Cast fill value to array's dtype#2020
d-v-b merged 4 commits into
zarr-developers:v3from
d-v-b:cast_fill_value

Conversation

@d-v-b

@d-v-bd-v-b commented Jul 9, 2024

Copy link
Copy Markdown
Contributor

In v3 right now, we don't apply any parsing or validation to the fill_value attribute of an array. This PR fixes that.

In this PR, the fill_value is cast to an instance of the array's dtype, using normal numpy dtype casting semantics. I also added JSON serialization for complex dtypes, but this is not tested yet. I will add those tests as part of a later refactor of the metadata tests.

For v2 arrays, I am importing the v2 fill value parsing function and wrapping it in a very light wrapper. This preserves all the v2 behavior.

I also added a fill_value attribute to the Array class. Happy to remove this if it's not supposed to be there.

I put the metadata tests in a new directory structure: tests/v3/metadata/test_v2.py for v2 stuff and tests/v3/metadata/test_v3.py for v3 stuff. This keeps the v2 and v3 logic separated, and removes the need to name functions test_foo_v3 and the like. We should ultimately use an analogous layout in the library code.

Longer term we should support the raw bits datatypes defined in the zarr v3 spec, but I don't think we need that now.

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
d-v-b requested review from jhamman and normanrzJuly 9, 2024 14:57
Comment threadtests/v3/test_metadata/test_v3.py Outdated

@normanrznormanrz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great work!

@d-v-b
d-v-b merged commit b8baa68 into zarr-developers:v3Jul 10, 2024
@d-v-b
d-v-b deleted the cast_fill_value branch July 10, 2024 15:39
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jul 25, 2024
* v3: (22 commits)
chore: update pre-commit hooks (zarr-developers#2051)
Apply ruff/flake8-bandit rule B006 (zarr-developers#2049)
Move fixtures to `tests` (zarr-developers#1813)
Multiple imports for an import name (zarr-developers#2047)
Redundant list comprehension (zarr-developers#2048)
chore: update pre-commit hooks (zarr-developers#2039)
Cast fill value to array's dtype (zarr-developers#2020)
chore: update pre-commit hooks (zarr-developers#2017)
make shardingcodec pickleable (zarr-developers#2011)
doc: copy 3.0.0.alpha changelog into release.rst (zarr-developers#2007)
build(ci): enable python 3.12 in github actions (zarr-developers#2005)
Bump NumPy to 2.0 (zarr-developers#1983)
chore: update pre-commit hooks (zarr-developers#1989)
Fix indexing with bools (zarr-developers#1968)
Fix string interpolation (zarr-developers#1998)
Unnecessary comprehension (zarr-developers#1997)
Stop ignoring these ruff rules (zarr-developers#2001)
Merge collapsible if statements (zarr-developers#1999)
Unnecessary comprehension (zarr-developers#1996)
Handle Path in `make_store_path` (zarr-developers#1992)
...
@dcheriandcherian mentioned this pull request Jul 25, 2024
6 tasks
Sign up for freeto 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

@d-v-b@normanrz