[DRAFT] V3 spec implmentation. - #568

Closed
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3
Closed

[DRAFT] V3 spec implmentation.#568
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3

Conversation

@Carreau

Copy link
Copy Markdown
Contributor

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.

IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.

So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.

  1. A base class that automatically provide sync version of all async
    method of a class. I'm playing with the idea of having most method
    async as this may be useful in some context.

For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.

  1. An adapted class that wraps a v3 store and provide a v2 API.
    My though is that most code is currently v2 compatible and it would be
    useful for legacy codebase and early testing of store.

  2. a class that wrap 2 stores, a reference and a tested one, replicate
    operation on both stores, and abort if it sees any difference in
    behavior. This could help to catch changes in behavior.

The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.

@pep8speaks

pep8speaks commented Jun 2, 2020

Copy link
Copy Markdown

Hello @Carreau! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 26:1: E402 module level import not at top of file
Line 218:75: E203 whitespace before ':'

Comment last updated at 2020-08-26 16:50:57 UTC

@Carreau

Copy link
Copy Markdown
ContributorAuthor

Question on v3 implementation route. Do you want a complete rewrite in a separate module ? Or do you want to still use the current Group/Array class as well as the utilities functions in zarr.storage / zarr.meta ...etc.

Many of these function will need to be mave "version aware", some of them might be able to get the current version as they are given a store. But other (decode/encode_array_metadata) are not and should be likely given a kwarg.

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
@Carreau

Carreau commented Sep 28, 2020

Copy link
Copy Markdown
ContributorAuthor

Pr was at 96732fc97e86fdb07f84d8b307a11d1f311a0fc3 , will rebase /squash and force-push.

@joshmoore

Copy link
Copy Markdown
Member

This has been completed by #898 (plus follow ons like #1007)

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.

3 participants

@Carreau@pep8speaks@joshmoore
, '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

[DRAFT] V3 spec implmentation. - #568

Closed
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3
Closed

[DRAFT] V3 spec implmentation.#568
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3

Conversation

@Carreau

Copy link
Copy Markdown
Contributor

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.

IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.

So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.

  1. A base class that automatically provide sync version of all async
    method of a class. I'm playing with the idea of having most method
    async as this may be useful in some context.

For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.

  1. An adapted class that wraps a v3 store and provide a v2 API.
    My though is that most code is currently v2 compatible and it would be
    useful for legacy codebase and early testing of store.

  2. a class that wrap 2 stores, a reference and a tested one, replicate
    operation on both stores, and abort if it sees any difference in
    behavior. This could help to catch changes in behavior.

The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.

@pep8speaks

pep8speaks commented Jun 2, 2020

Copy link
Copy Markdown

Hello @Carreau! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 26:1: E402 module level import not at top of file
Line 218:75: E203 whitespace before ':'

Comment last updated at 2020-08-26 16:50:57 UTC

@Carreau

Copy link
Copy Markdown
ContributorAuthor

Question on v3 implementation route. Do you want a complete rewrite in a separate module ? Or do you want to still use the current Group/Array class as well as the utilities functions in zarr.storage / zarr.meta ...etc.

Many of these function will need to be mave "version aware", some of them might be able to get the current version as they are given a store. But other (decode/encode_array_metadata) are not and should be likely given a kwarg.

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
@Carreau

Carreau commented Sep 28, 2020

Copy link
Copy Markdown
ContributorAuthor

Pr was at 96732fc97e86fdb07f84d8b307a11d1f311a0fc3 , will rebase /squash and force-push.

@joshmoore

Copy link
Copy Markdown
Member

This has been completed by #898 (plus follow ons like #1007)

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.

3 participants

@Carreau@pep8speaks@joshmoore
, '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

[DRAFT] V3 spec implmentation. - #568

Closed
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3
Closed

[DRAFT] V3 spec implmentation.#568
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3

Conversation

@Carreau

Copy link
Copy Markdown
Contributor

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.

IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.

So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.

  1. A base class that automatically provide sync version of all async
    method of a class. I'm playing with the idea of having most method
    async as this may be useful in some context.

For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.

  1. An adapted class that wraps a v3 store and provide a v2 API.
    My though is that most code is currently v2 compatible and it would be
    useful for legacy codebase and early testing of store.

  2. a class that wrap 2 stores, a reference and a tested one, replicate
    operation on both stores, and abort if it sees any difference in
    behavior. This could help to catch changes in behavior.

The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.

@pep8speaks

pep8speaks commented Jun 2, 2020

Copy link
Copy Markdown

Hello @Carreau! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 26:1: E402 module level import not at top of file
Line 218:75: E203 whitespace before ':'

Comment last updated at 2020-08-26 16:50:57 UTC

@Carreau

Copy link
Copy Markdown
ContributorAuthor

Question on v3 implementation route. Do you want a complete rewrite in a separate module ? Or do you want to still use the current Group/Array class as well as the utilities functions in zarr.storage / zarr.meta ...etc.

Many of these function will need to be mave "version aware", some of them might be able to get the current version as they are given a store. But other (decode/encode_array_metadata) are not and should be likely given a kwarg.

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
@Carreau

Carreau commented Sep 28, 2020

Copy link
Copy Markdown
ContributorAuthor

Pr was at 96732fc97e86fdb07f84d8b307a11d1f311a0fc3 , will rebase /squash and force-push.

@joshmoore

Copy link
Copy Markdown
Member

This has been completed by #898 (plus follow ons like #1007)

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.

3 participants

@Carreau@pep8speaks@joshmoore
, '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

[DRAFT] V3 spec implmentation. - #568

Closed
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3
Closed

[DRAFT] V3 spec implmentation.#568
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3

Conversation

@Carreau

Copy link
Copy Markdown
Contributor

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.

IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.

So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.

  1. A base class that automatically provide sync version of all async
    method of a class. I'm playing with the idea of having most method
    async as this may be useful in some context.

For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.

  1. An adapted class that wraps a v3 store and provide a v2 API.
    My though is that most code is currently v2 compatible and it would be
    useful for legacy codebase and early testing of store.

  2. a class that wrap 2 stores, a reference and a tested one, replicate
    operation on both stores, and abort if it sees any difference in
    behavior. This could help to catch changes in behavior.

The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.

@pep8speaks

pep8speaks commented Jun 2, 2020

Copy link
Copy Markdown

Hello @Carreau! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 26:1: E402 module level import not at top of file
Line 218:75: E203 whitespace before ':'

Comment last updated at 2020-08-26 16:50:57 UTC

@Carreau

Copy link
Copy Markdown
ContributorAuthor

Question on v3 implementation route. Do you want a complete rewrite in a separate module ? Or do you want to still use the current Group/Array class as well as the utilities functions in zarr.storage / zarr.meta ...etc.

Many of these function will need to be mave "version aware", some of them might be able to get the current version as they are given a store. But other (decode/encode_array_metadata) are not and should be likely given a kwarg.

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
@Carreau

Carreau commented Sep 28, 2020

Copy link
Copy Markdown
ContributorAuthor

Pr was at 96732fc97e86fdb07f84d8b307a11d1f311a0fc3 , will rebase /squash and force-push.

@joshmoore

Copy link
Copy Markdown
Member

This has been completed by #898 (plus follow ons like #1007)

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.

3 participants

@Carreau@pep8speaks@joshmoore
, '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

[DRAFT] V3 spec implmentation. - #568

Closed
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3
Closed

[DRAFT] V3 spec implmentation.#568
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3

Conversation

@Carreau

Copy link
Copy Markdown
Contributor

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.

IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.

So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.

  1. A base class that automatically provide sync version of all async
    method of a class. I'm playing with the idea of having most method
    async as this may be useful in some context.

For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.

  1. An adapted class that wraps a v3 store and provide a v2 API.
    My though is that most code is currently v2 compatible and it would be
    useful for legacy codebase and early testing of store.

  2. a class that wrap 2 stores, a reference and a tested one, replicate
    operation on both stores, and abort if it sees any difference in
    behavior. This could help to catch changes in behavior.

The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.

@pep8speaks

pep8speaks commented Jun 2, 2020

Copy link
Copy Markdown

Hello @Carreau! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 26:1: E402 module level import not at top of file
Line 218:75: E203 whitespace before ':'

Comment last updated at 2020-08-26 16:50:57 UTC

@Carreau

Copy link
Copy Markdown
ContributorAuthor

Question on v3 implementation route. Do you want a complete rewrite in a separate module ? Or do you want to still use the current Group/Array class as well as the utilities functions in zarr.storage / zarr.meta ...etc.

Many of these function will need to be mave "version aware", some of them might be able to get the current version as they are given a store. But other (decode/encode_array_metadata) are not and should be likely given a kwarg.

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
@Carreau

Carreau commented Sep 28, 2020

Copy link
Copy Markdown
ContributorAuthor

Pr was at 96732fc97e86fdb07f84d8b307a11d1f311a0fc3 , will rebase /squash and force-push.

@joshmoore

Copy link
Copy Markdown
Member

This has been completed by #898 (plus follow ons like #1007)

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.

3 participants

@Carreau@pep8speaks@joshmoore
, '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

[DRAFT] V3 spec implmentation. - #568

Closed
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3
Closed

[DRAFT] V3 spec implmentation.#568
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3

Conversation

@Carreau

Copy link
Copy Markdown
Contributor

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.

IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.

So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.

  1. A base class that automatically provide sync version of all async
    method of a class. I'm playing with the idea of having most method
    async as this may be useful in some context.

For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.

  1. An adapted class that wraps a v3 store and provide a v2 API.
    My though is that most code is currently v2 compatible and it would be
    useful for legacy codebase and early testing of store.

  2. a class that wrap 2 stores, a reference and a tested one, replicate
    operation on both stores, and abort if it sees any difference in
    behavior. This could help to catch changes in behavior.

The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.

@pep8speaks

pep8speaks commented Jun 2, 2020

Copy link
Copy Markdown

Hello @Carreau! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 26:1: E402 module level import not at top of file
Line 218:75: E203 whitespace before ':'

Comment last updated at 2020-08-26 16:50:57 UTC

@Carreau

Copy link
Copy Markdown
ContributorAuthor

Question on v3 implementation route. Do you want a complete rewrite in a separate module ? Or do you want to still use the current Group/Array class as well as the utilities functions in zarr.storage / zarr.meta ...etc.

Many of these function will need to be mave "version aware", some of them might be able to get the current version as they are given a store. But other (decode/encode_array_metadata) are not and should be likely given a kwarg.

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
@Carreau

Carreau commented Sep 28, 2020

Copy link
Copy Markdown
ContributorAuthor

Pr was at 96732fc97e86fdb07f84d8b307a11d1f311a0fc3 , will rebase /squash and force-push.

@joshmoore

Copy link
Copy Markdown
Member

This has been completed by #898 (plus follow ons like #1007)

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.

3 participants

@Carreau@pep8speaks@joshmoore
, '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

[DRAFT] V3 spec implmentation. - #568

Closed
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3
Closed

[DRAFT] V3 spec implmentation.#568
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3

Conversation

@Carreau

Copy link
Copy Markdown
Contributor

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.

IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.

So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.

  1. A base class that automatically provide sync version of all async
    method of a class. I'm playing with the idea of having most method
    async as this may be useful in some context.

For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.

  1. An adapted class that wraps a v3 store and provide a v2 API.
    My though is that most code is currently v2 compatible and it would be
    useful for legacy codebase and early testing of store.

  2. a class that wrap 2 stores, a reference and a tested one, replicate
    operation on both stores, and abort if it sees any difference in
    behavior. This could help to catch changes in behavior.

The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.

@pep8speaks

pep8speaks commented Jun 2, 2020

Copy link
Copy Markdown

Hello @Carreau! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 26:1: E402 module level import not at top of file
Line 218:75: E203 whitespace before ':'

Comment last updated at 2020-08-26 16:50:57 UTC

@Carreau

Copy link
Copy Markdown
ContributorAuthor

Question on v3 implementation route. Do you want a complete rewrite in a separate module ? Or do you want to still use the current Group/Array class as well as the utilities functions in zarr.storage / zarr.meta ...etc.

Many of these function will need to be mave "version aware", some of them might be able to get the current version as they are given a store. But other (decode/encode_array_metadata) are not and should be likely given a kwarg.

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
@Carreau

Carreau commented Sep 28, 2020

Copy link
Copy Markdown
ContributorAuthor

Pr was at 96732fc97e86fdb07f84d8b307a11d1f311a0fc3 , will rebase /squash and force-push.

@joshmoore

Copy link
Copy Markdown
Member

This has been completed by #898 (plus follow ons like #1007)

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.

3 participants

@Carreau@pep8speaks@joshmoore
, '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

[DRAFT] V3 spec implmentation. - #568

Closed
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3
Closed

[DRAFT] V3 spec implmentation.#568
Carreau wants to merge 2 commits into
zarr-developers:masterfrom
Carreau:spec-v3

Conversation

@Carreau

Copy link
Copy Markdown
Contributor

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.

IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.

So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.

  1. A base class that automatically provide sync version of all async
    method of a class. I'm playing with the idea of having most method
    async as this may be useful in some context.

For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.

  1. An adapted class that wraps a v3 store and provide a v2 API.
    My though is that most code is currently v2 compatible and it would be
    useful for legacy codebase and early testing of store.

  2. a class that wrap 2 stores, a reference and a tested one, replicate
    operation on both stores, and abort if it sees any difference in
    behavior. This could help to catch changes in behavior.

The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.

@pep8speaks

pep8speaks commented Jun 2, 2020

Copy link
Copy Markdown

Hello @Carreau! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 26:1: E402 module level import not at top of file
Line 218:75: E203 whitespace before ':'

Comment last updated at 2020-08-26 16:50:57 UTC

@Carreau

Copy link
Copy Markdown
ContributorAuthor

Question on v3 implementation route. Do you want a complete rewrite in a separate module ? Or do you want to still use the current Group/Array class as well as the utilities functions in zarr.storage / zarr.meta ...etc.

Many of these function will need to be mave "version aware", some of them might be able to get the current version as they are given a store. But other (decode/encode_array_metadata) are not and should be likely given a kwarg.

This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
This is mostly opened to foster discussion and need code from https://github.com/Carreau/zarr-spec-v3-impl.
IN the above mentioned repository I'm working on looking at what an
implementation of the spec v3 could look to inform us on the possible
transition and compatiblity shims.
So far I have a rough implementation of an in memory v3 store as well as
multiple utilities.
1) A base class that automatically provide sync version of all async
method of a class. I'm playing with the idea of having most method
async as this may be useful in some context.
For example when creating a array at /a/b/c/d/e/f/g/h/i/j/k you want
to check that None of the parents are arrays, which can be done with N
async requests.
2) An adapted class that wraps a v3 store and provide a v2 API.
My though is that most code is currently v2 compatible and it would be
useful for legacy codebase and early testing of store.
3) a class that wrap 2 stores, a reference and a tested one, replicate
operation on both stores, and abort if it sees any difference in
behavior. This could help to catch changes in behavior.
The tests in this PR start to test the v3 memorystore and compare it to
the v2 memorystore.
@Carreau

Carreau commented Sep 28, 2020

Copy link
Copy Markdown
ContributorAuthor

Pr was at 96732fc97e86fdb07f84d8b307a11d1f311a0fc3 , will rebase /squash and force-push.

@joshmoore

Copy link
Copy Markdown
Member

This has been completed by #898 (plus follow ons like #1007)

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.

3 participants

@Carreau@pep8speaks@joshmoore