This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Update R dashCoreComponents package to 0.43.0 - #439

Merged
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34
Jan 29, 2019
Merged

Update R dashCoreComponents package to 0.43.0#439
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34

Conversation

@rpkyle

@rpkylerpkyle commented Jan 18, 2019

Copy link
Copy Markdown
Contributor

The JSON >> R 'transpiler' has been rewritten in Python, and was used to generate an installable R package for version 0.43.0 of dash-core-components. This PR closes#357.

@alexcjohnson@nicolaskruchten@T4rk1n@Marc-Andre-Rivet

Comment threaddash_core_components/Location.py Outdated
args = {k: _locals[k] for k in _explicit_args if k != 'children'}

for k in ['id']:
for k in [u'id']:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Where did this u (and in Store below) come from? Is this intentional, or a result of running the build script in py2 instead of py3?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I just re-ran the component generation in a virtualenv with Python 3, and it seems probable; the output is as before (rather than [u'id']).

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Just to wrap this up, the crux of the difference is that Python 3 does away with unicode and str is essentially unicode by default; in Python 2, importing via json.load will return Unicode strings. There are workarounds, and the one I've chosen to use is Mark Amery's byteify function.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Found a few minor issues with the new generation formatting, can open an issue for that and fix later.

"Upload"
"Tabs",
"Slider"
] No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline.

Comment threaddash_core_components/metadata.json Outdated
},
{
"name": "handleInterval",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Regenerated without indentation.

Comment threadR/coreChecklist.R
component$props <- filter_null(component$props)

structure(component, class = c('dash_component', 'list'))
} No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline at end of file.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The newline isn't required for R scripts.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think newline is required for any language we use, yet in some cases we actually set our linters to force it. Why?

  • It's sometimes useful on the command line (otherwise if you cat a file for some reason you'll find your next prompt at the end of the last line of the file, rather than on a new line)
  • In some editors, the last line may get intermittently covered up by a horizontal scroll bar
  • Github adds 🚫in diffs and nobody wants to annoy Github!

I don't see this as a big deal (unless you have anything to add to this list @T4rk1n), but it's mildly nice and - unless there's a good reason not to - probably easier to just add the newline than to argue about it 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No, it's not really important, just a pet peeves.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good points, easy to modify the transpiler to add in the newlines next time around!

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The props order of python component shouldn't change.

@rpkyle

Copy link
Copy Markdown
ContributorAuthor

Building dashCoreComponents for R failed using the latest version of dash (0.36.0) with the following error:

Error with path src/components/Textarea.react.jsTypeError: Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at checkWarn (dash/dash/extract-meta.js:45:15)
at Object.entries.forEach (dash/dash/extract-meta.js:54:24)
at Array.forEach (<anonymous>)
at docstringWarning (dash/dash/extract-meta.js:53:31)
at parseFile (dash/dash/extract-meta.js:70:9)
at dirs.forEach.filename (dash/dash/extract-meta.js:92:17)
at Array.forEach (<anonymous>)
at collectMetadataRecursively (dash/dash/extract-meta.js:87:14)
at componentPaths.forEach.componentPath (dash/dash/extract-meta.js:21:5)
at Array.forEach (<anonymous>)

The inclusion of debounce in the TextArea component appears to be some 🍝. I have 🔪 it, and the TypeError no longer occurs.

The issue was apparent in the generation of the Python class for this component, as there was no property corresponding to this argument.

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.42.2Update R dashCoreComponents package to 0.43.1Jan 29, 2019
@rpkyle

Copy link
Copy Markdown
ContributorAuthor

The props order for python component shouldn't change.

@T4rk1n If you could look over the recent commit, that'd be great. Hopefully we're nearing 💃.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💃

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.43.1Update R dashCoreComponents package to 0.43.0Jan 29, 2019
@rpkyle
rpkyle merged commit 51ab115 into masterJan 29, 2019
@alexcjohnson
alexcjohnson deleted the 0.42.2-issue34 branch January 29, 2019 19:46
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

R version of Core components

3 participants

@rpkyle@alexcjohnson@T4rk1n
, '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
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Update R dashCoreComponents package to 0.43.0 - #439

Merged
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34
Jan 29, 2019
Merged

Update R dashCoreComponents package to 0.43.0#439
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34

Conversation

@rpkyle

@rpkylerpkyle commented Jan 18, 2019

Copy link
Copy Markdown
Contributor

The JSON >> R 'transpiler' has been rewritten in Python, and was used to generate an installable R package for version 0.43.0 of dash-core-components. This PR closes#357.

@alexcjohnson@nicolaskruchten@T4rk1n@Marc-Andre-Rivet

Comment threaddash_core_components/Location.py Outdated
args = {k: _locals[k] for k in _explicit_args if k != 'children'}

for k in ['id']:
for k in [u'id']:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Where did this u (and in Store below) come from? Is this intentional, or a result of running the build script in py2 instead of py3?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I just re-ran the component generation in a virtualenv with Python 3, and it seems probable; the output is as before (rather than [u'id']).

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Just to wrap this up, the crux of the difference is that Python 3 does away with unicode and str is essentially unicode by default; in Python 2, importing via json.load will return Unicode strings. There are workarounds, and the one I've chosen to use is Mark Amery's byteify function.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Found a few minor issues with the new generation formatting, can open an issue for that and fix later.

"Upload"
"Tabs",
"Slider"
] No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline.

Comment threaddash_core_components/metadata.json Outdated
},
{
"name": "handleInterval",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Regenerated without indentation.

Comment threadR/coreChecklist.R
component$props <- filter_null(component$props)

structure(component, class = c('dash_component', 'list'))
} No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline at end of file.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The newline isn't required for R scripts.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think newline is required for any language we use, yet in some cases we actually set our linters to force it. Why?

  • It's sometimes useful on the command line (otherwise if you cat a file for some reason you'll find your next prompt at the end of the last line of the file, rather than on a new line)
  • In some editors, the last line may get intermittently covered up by a horizontal scroll bar
  • Github adds 🚫in diffs and nobody wants to annoy Github!

I don't see this as a big deal (unless you have anything to add to this list @T4rk1n), but it's mildly nice and - unless there's a good reason not to - probably easier to just add the newline than to argue about it 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No, it's not really important, just a pet peeves.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good points, easy to modify the transpiler to add in the newlines next time around!

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The props order of python component shouldn't change.

@rpkyle

Copy link
Copy Markdown
ContributorAuthor

Building dashCoreComponents for R failed using the latest version of dash (0.36.0) with the following error:

Error with path src/components/Textarea.react.jsTypeError: Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at checkWarn (dash/dash/extract-meta.js:45:15)
at Object.entries.forEach (dash/dash/extract-meta.js:54:24)
at Array.forEach (<anonymous>)
at docstringWarning (dash/dash/extract-meta.js:53:31)
at parseFile (dash/dash/extract-meta.js:70:9)
at dirs.forEach.filename (dash/dash/extract-meta.js:92:17)
at Array.forEach (<anonymous>)
at collectMetadataRecursively (dash/dash/extract-meta.js:87:14)
at componentPaths.forEach.componentPath (dash/dash/extract-meta.js:21:5)
at Array.forEach (<anonymous>)

The inclusion of debounce in the TextArea component appears to be some 🍝. I have 🔪 it, and the TypeError no longer occurs.

The issue was apparent in the generation of the Python class for this component, as there was no property corresponding to this argument.

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.42.2Update R dashCoreComponents package to 0.43.1Jan 29, 2019
@rpkyle

Copy link
Copy Markdown
ContributorAuthor

The props order for python component shouldn't change.

@T4rk1n If you could look over the recent commit, that'd be great. Hopefully we're nearing 💃.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💃

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.43.1Update R dashCoreComponents package to 0.43.0Jan 29, 2019
@rpkyle
rpkyle merged commit 51ab115 into masterJan 29, 2019
@alexcjohnson
alexcjohnson deleted the 0.42.2-issue34 branch January 29, 2019 19:46
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

R version of Core components

3 participants

@rpkyle@alexcjohnson@T4rk1n
, '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
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Update R dashCoreComponents package to 0.43.0 - #439

Merged
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34
Jan 29, 2019
Merged

Update R dashCoreComponents package to 0.43.0#439
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34

Conversation

@rpkyle

@rpkylerpkyle commented Jan 18, 2019

Copy link
Copy Markdown
Contributor

The JSON >> R 'transpiler' has been rewritten in Python, and was used to generate an installable R package for version 0.43.0 of dash-core-components. This PR closes#357.

@alexcjohnson@nicolaskruchten@T4rk1n@Marc-Andre-Rivet

Comment threaddash_core_components/Location.py Outdated
args = {k: _locals[k] for k in _explicit_args if k != 'children'}

for k in ['id']:
for k in [u'id']:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Where did this u (and in Store below) come from? Is this intentional, or a result of running the build script in py2 instead of py3?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I just re-ran the component generation in a virtualenv with Python 3, and it seems probable; the output is as before (rather than [u'id']).

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Just to wrap this up, the crux of the difference is that Python 3 does away with unicode and str is essentially unicode by default; in Python 2, importing via json.load will return Unicode strings. There are workarounds, and the one I've chosen to use is Mark Amery's byteify function.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Found a few minor issues with the new generation formatting, can open an issue for that and fix later.

"Upload"
"Tabs",
"Slider"
] No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline.

Comment threaddash_core_components/metadata.json Outdated
},
{
"name": "handleInterval",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Regenerated without indentation.

Comment threadR/coreChecklist.R
component$props <- filter_null(component$props)

structure(component, class = c('dash_component', 'list'))
} No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline at end of file.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The newline isn't required for R scripts.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think newline is required for any language we use, yet in some cases we actually set our linters to force it. Why?

  • It's sometimes useful on the command line (otherwise if you cat a file for some reason you'll find your next prompt at the end of the last line of the file, rather than on a new line)
  • In some editors, the last line may get intermittently covered up by a horizontal scroll bar
  • Github adds 🚫in diffs and nobody wants to annoy Github!

I don't see this as a big deal (unless you have anything to add to this list @T4rk1n), but it's mildly nice and - unless there's a good reason not to - probably easier to just add the newline than to argue about it 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No, it's not really important, just a pet peeves.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good points, easy to modify the transpiler to add in the newlines next time around!

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The props order of python component shouldn't change.

@rpkyle

Copy link
Copy Markdown
ContributorAuthor

Building dashCoreComponents for R failed using the latest version of dash (0.36.0) with the following error:

Error with path src/components/Textarea.react.jsTypeError: Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at checkWarn (dash/dash/extract-meta.js:45:15)
at Object.entries.forEach (dash/dash/extract-meta.js:54:24)
at Array.forEach (<anonymous>)
at docstringWarning (dash/dash/extract-meta.js:53:31)
at parseFile (dash/dash/extract-meta.js:70:9)
at dirs.forEach.filename (dash/dash/extract-meta.js:92:17)
at Array.forEach (<anonymous>)
at collectMetadataRecursively (dash/dash/extract-meta.js:87:14)
at componentPaths.forEach.componentPath (dash/dash/extract-meta.js:21:5)
at Array.forEach (<anonymous>)

The inclusion of debounce in the TextArea component appears to be some 🍝. I have 🔪 it, and the TypeError no longer occurs.

The issue was apparent in the generation of the Python class for this component, as there was no property corresponding to this argument.

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.42.2Update R dashCoreComponents package to 0.43.1Jan 29, 2019
@rpkyle

Copy link
Copy Markdown
ContributorAuthor

The props order for python component shouldn't change.

@T4rk1n If you could look over the recent commit, that'd be great. Hopefully we're nearing 💃.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💃

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.43.1Update R dashCoreComponents package to 0.43.0Jan 29, 2019
@rpkyle
rpkyle merged commit 51ab115 into masterJan 29, 2019
@alexcjohnson
alexcjohnson deleted the 0.42.2-issue34 branch January 29, 2019 19:46
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

R version of Core components

3 participants

@rpkyle@alexcjohnson@T4rk1n
, '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
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Update R dashCoreComponents package to 0.43.0 - #439

Merged
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34
Jan 29, 2019
Merged

Update R dashCoreComponents package to 0.43.0#439
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34

Conversation

@rpkyle

@rpkylerpkyle commented Jan 18, 2019

Copy link
Copy Markdown
Contributor

The JSON >> R 'transpiler' has been rewritten in Python, and was used to generate an installable R package for version 0.43.0 of dash-core-components. This PR closes#357.

@alexcjohnson@nicolaskruchten@T4rk1n@Marc-Andre-Rivet

Comment threaddash_core_components/Location.py Outdated
args = {k: _locals[k] for k in _explicit_args if k != 'children'}

for k in ['id']:
for k in [u'id']:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Where did this u (and in Store below) come from? Is this intentional, or a result of running the build script in py2 instead of py3?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I just re-ran the component generation in a virtualenv with Python 3, and it seems probable; the output is as before (rather than [u'id']).

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Just to wrap this up, the crux of the difference is that Python 3 does away with unicode and str is essentially unicode by default; in Python 2, importing via json.load will return Unicode strings. There are workarounds, and the one I've chosen to use is Mark Amery's byteify function.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Found a few minor issues with the new generation formatting, can open an issue for that and fix later.

"Upload"
"Tabs",
"Slider"
] No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline.

Comment threaddash_core_components/metadata.json Outdated
},
{
"name": "handleInterval",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Regenerated without indentation.

Comment threadR/coreChecklist.R
component$props <- filter_null(component$props)

structure(component, class = c('dash_component', 'list'))
} No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline at end of file.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The newline isn't required for R scripts.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think newline is required for any language we use, yet in some cases we actually set our linters to force it. Why?

  • It's sometimes useful on the command line (otherwise if you cat a file for some reason you'll find your next prompt at the end of the last line of the file, rather than on a new line)
  • In some editors, the last line may get intermittently covered up by a horizontal scroll bar
  • Github adds 🚫in diffs and nobody wants to annoy Github!

I don't see this as a big deal (unless you have anything to add to this list @T4rk1n), but it's mildly nice and - unless there's a good reason not to - probably easier to just add the newline than to argue about it 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No, it's not really important, just a pet peeves.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good points, easy to modify the transpiler to add in the newlines next time around!

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The props order of python component shouldn't change.

@rpkyle

Copy link
Copy Markdown
ContributorAuthor

Building dashCoreComponents for R failed using the latest version of dash (0.36.0) with the following error:

Error with path src/components/Textarea.react.jsTypeError: Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at checkWarn (dash/dash/extract-meta.js:45:15)
at Object.entries.forEach (dash/dash/extract-meta.js:54:24)
at Array.forEach (<anonymous>)
at docstringWarning (dash/dash/extract-meta.js:53:31)
at parseFile (dash/dash/extract-meta.js:70:9)
at dirs.forEach.filename (dash/dash/extract-meta.js:92:17)
at Array.forEach (<anonymous>)
at collectMetadataRecursively (dash/dash/extract-meta.js:87:14)
at componentPaths.forEach.componentPath (dash/dash/extract-meta.js:21:5)
at Array.forEach (<anonymous>)

The inclusion of debounce in the TextArea component appears to be some 🍝. I have 🔪 it, and the TypeError no longer occurs.

The issue was apparent in the generation of the Python class for this component, as there was no property corresponding to this argument.

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.42.2Update R dashCoreComponents package to 0.43.1Jan 29, 2019
@rpkyle

Copy link
Copy Markdown
ContributorAuthor

The props order for python component shouldn't change.

@T4rk1n If you could look over the recent commit, that'd be great. Hopefully we're nearing 💃.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💃

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.43.1Update R dashCoreComponents package to 0.43.0Jan 29, 2019
@rpkyle
rpkyle merged commit 51ab115 into masterJan 29, 2019
@alexcjohnson
alexcjohnson deleted the 0.42.2-issue34 branch January 29, 2019 19:46
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

R version of Core components

3 participants

@rpkyle@alexcjohnson@T4rk1n
, '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
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Update R dashCoreComponents package to 0.43.0 - #439

Merged
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34
Jan 29, 2019
Merged

Update R dashCoreComponents package to 0.43.0#439
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34

Conversation

@rpkyle

@rpkylerpkyle commented Jan 18, 2019

Copy link
Copy Markdown
Contributor

The JSON >> R 'transpiler' has been rewritten in Python, and was used to generate an installable R package for version 0.43.0 of dash-core-components. This PR closes#357.

@alexcjohnson@nicolaskruchten@T4rk1n@Marc-Andre-Rivet

Comment threaddash_core_components/Location.py Outdated
args = {k: _locals[k] for k in _explicit_args if k != 'children'}

for k in ['id']:
for k in [u'id']:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Where did this u (and in Store below) come from? Is this intentional, or a result of running the build script in py2 instead of py3?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I just re-ran the component generation in a virtualenv with Python 3, and it seems probable; the output is as before (rather than [u'id']).

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Just to wrap this up, the crux of the difference is that Python 3 does away with unicode and str is essentially unicode by default; in Python 2, importing via json.load will return Unicode strings. There are workarounds, and the one I've chosen to use is Mark Amery's byteify function.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Found a few minor issues with the new generation formatting, can open an issue for that and fix later.

"Upload"
"Tabs",
"Slider"
] No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline.

Comment threaddash_core_components/metadata.json Outdated
},
{
"name": "handleInterval",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Regenerated without indentation.

Comment threadR/coreChecklist.R
component$props <- filter_null(component$props)

structure(component, class = c('dash_component', 'list'))
} No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline at end of file.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The newline isn't required for R scripts.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think newline is required for any language we use, yet in some cases we actually set our linters to force it. Why?

  • It's sometimes useful on the command line (otherwise if you cat a file for some reason you'll find your next prompt at the end of the last line of the file, rather than on a new line)
  • In some editors, the last line may get intermittently covered up by a horizontal scroll bar
  • Github adds 🚫in diffs and nobody wants to annoy Github!

I don't see this as a big deal (unless you have anything to add to this list @T4rk1n), but it's mildly nice and - unless there's a good reason not to - probably easier to just add the newline than to argue about it 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No, it's not really important, just a pet peeves.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good points, easy to modify the transpiler to add in the newlines next time around!

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The props order of python component shouldn't change.

@rpkyle

Copy link
Copy Markdown
ContributorAuthor

Building dashCoreComponents for R failed using the latest version of dash (0.36.0) with the following error:

Error with path src/components/Textarea.react.jsTypeError: Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at checkWarn (dash/dash/extract-meta.js:45:15)
at Object.entries.forEach (dash/dash/extract-meta.js:54:24)
at Array.forEach (<anonymous>)
at docstringWarning (dash/dash/extract-meta.js:53:31)
at parseFile (dash/dash/extract-meta.js:70:9)
at dirs.forEach.filename (dash/dash/extract-meta.js:92:17)
at Array.forEach (<anonymous>)
at collectMetadataRecursively (dash/dash/extract-meta.js:87:14)
at componentPaths.forEach.componentPath (dash/dash/extract-meta.js:21:5)
at Array.forEach (<anonymous>)

The inclusion of debounce in the TextArea component appears to be some 🍝. I have 🔪 it, and the TypeError no longer occurs.

The issue was apparent in the generation of the Python class for this component, as there was no property corresponding to this argument.

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.42.2Update R dashCoreComponents package to 0.43.1Jan 29, 2019
@rpkyle

Copy link
Copy Markdown
ContributorAuthor

The props order for python component shouldn't change.

@T4rk1n If you could look over the recent commit, that'd be great. Hopefully we're nearing 💃.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💃

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.43.1Update R dashCoreComponents package to 0.43.0Jan 29, 2019
@rpkyle
rpkyle merged commit 51ab115 into masterJan 29, 2019
@alexcjohnson
alexcjohnson deleted the 0.42.2-issue34 branch January 29, 2019 19:46
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

R version of Core components

3 participants

@rpkyle@alexcjohnson@T4rk1n
, '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
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Update R dashCoreComponents package to 0.43.0 - #439

Merged
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34
Jan 29, 2019
Merged

Update R dashCoreComponents package to 0.43.0#439
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34

Conversation

@rpkyle

@rpkylerpkyle commented Jan 18, 2019

Copy link
Copy Markdown
Contributor

The JSON >> R 'transpiler' has been rewritten in Python, and was used to generate an installable R package for version 0.43.0 of dash-core-components. This PR closes#357.

@alexcjohnson@nicolaskruchten@T4rk1n@Marc-Andre-Rivet

Comment threaddash_core_components/Location.py Outdated
args = {k: _locals[k] for k in _explicit_args if k != 'children'}

for k in ['id']:
for k in [u'id']:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Where did this u (and in Store below) come from? Is this intentional, or a result of running the build script in py2 instead of py3?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I just re-ran the component generation in a virtualenv with Python 3, and it seems probable; the output is as before (rather than [u'id']).

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Just to wrap this up, the crux of the difference is that Python 3 does away with unicode and str is essentially unicode by default; in Python 2, importing via json.load will return Unicode strings. There are workarounds, and the one I've chosen to use is Mark Amery's byteify function.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Found a few minor issues with the new generation formatting, can open an issue for that and fix later.

"Upload"
"Tabs",
"Slider"
] No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline.

Comment threaddash_core_components/metadata.json Outdated
},
{
"name": "handleInterval",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Regenerated without indentation.

Comment threadR/coreChecklist.R
component$props <- filter_null(component$props)

structure(component, class = c('dash_component', 'list'))
} No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline at end of file.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The newline isn't required for R scripts.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think newline is required for any language we use, yet in some cases we actually set our linters to force it. Why?

  • It's sometimes useful on the command line (otherwise if you cat a file for some reason you'll find your next prompt at the end of the last line of the file, rather than on a new line)
  • In some editors, the last line may get intermittently covered up by a horizontal scroll bar
  • Github adds 🚫in diffs and nobody wants to annoy Github!

I don't see this as a big deal (unless you have anything to add to this list @T4rk1n), but it's mildly nice and - unless there's a good reason not to - probably easier to just add the newline than to argue about it 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No, it's not really important, just a pet peeves.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good points, easy to modify the transpiler to add in the newlines next time around!

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The props order of python component shouldn't change.

@rpkyle

Copy link
Copy Markdown
ContributorAuthor

Building dashCoreComponents for R failed using the latest version of dash (0.36.0) with the following error:

Error with path src/components/Textarea.react.jsTypeError: Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at checkWarn (dash/dash/extract-meta.js:45:15)
at Object.entries.forEach (dash/dash/extract-meta.js:54:24)
at Array.forEach (<anonymous>)
at docstringWarning (dash/dash/extract-meta.js:53:31)
at parseFile (dash/dash/extract-meta.js:70:9)
at dirs.forEach.filename (dash/dash/extract-meta.js:92:17)
at Array.forEach (<anonymous>)
at collectMetadataRecursively (dash/dash/extract-meta.js:87:14)
at componentPaths.forEach.componentPath (dash/dash/extract-meta.js:21:5)
at Array.forEach (<anonymous>)

The inclusion of debounce in the TextArea component appears to be some 🍝. I have 🔪 it, and the TypeError no longer occurs.

The issue was apparent in the generation of the Python class for this component, as there was no property corresponding to this argument.

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.42.2Update R dashCoreComponents package to 0.43.1Jan 29, 2019
@rpkyle

Copy link
Copy Markdown
ContributorAuthor

The props order for python component shouldn't change.

@T4rk1n If you could look over the recent commit, that'd be great. Hopefully we're nearing 💃.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💃

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.43.1Update R dashCoreComponents package to 0.43.0Jan 29, 2019
@rpkyle
rpkyle merged commit 51ab115 into masterJan 29, 2019
@alexcjohnson
alexcjohnson deleted the 0.42.2-issue34 branch January 29, 2019 19:46
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

R version of Core components

3 participants

@rpkyle@alexcjohnson@T4rk1n
, '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
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Update R dashCoreComponents package to 0.43.0 - #439

Merged
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34
Jan 29, 2019
Merged

Update R dashCoreComponents package to 0.43.0#439
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34

Conversation

@rpkyle

@rpkylerpkyle commented Jan 18, 2019

Copy link
Copy Markdown
Contributor

The JSON >> R 'transpiler' has been rewritten in Python, and was used to generate an installable R package for version 0.43.0 of dash-core-components. This PR closes#357.

@alexcjohnson@nicolaskruchten@T4rk1n@Marc-Andre-Rivet

Comment threaddash_core_components/Location.py Outdated
args = {k: _locals[k] for k in _explicit_args if k != 'children'}

for k in ['id']:
for k in [u'id']:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Where did this u (and in Store below) come from? Is this intentional, or a result of running the build script in py2 instead of py3?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I just re-ran the component generation in a virtualenv with Python 3, and it seems probable; the output is as before (rather than [u'id']).

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Just to wrap this up, the crux of the difference is that Python 3 does away with unicode and str is essentially unicode by default; in Python 2, importing via json.load will return Unicode strings. There are workarounds, and the one I've chosen to use is Mark Amery's byteify function.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Found a few minor issues with the new generation formatting, can open an issue for that and fix later.

"Upload"
"Tabs",
"Slider"
] No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline.

Comment threaddash_core_components/metadata.json Outdated
},
{
"name": "handleInterval",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Regenerated without indentation.

Comment threadR/coreChecklist.R
component$props <- filter_null(component$props)

structure(component, class = c('dash_component', 'list'))
} No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline at end of file.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The newline isn't required for R scripts.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think newline is required for any language we use, yet in some cases we actually set our linters to force it. Why?

  • It's sometimes useful on the command line (otherwise if you cat a file for some reason you'll find your next prompt at the end of the last line of the file, rather than on a new line)
  • In some editors, the last line may get intermittently covered up by a horizontal scroll bar
  • Github adds 🚫in diffs and nobody wants to annoy Github!

I don't see this as a big deal (unless you have anything to add to this list @T4rk1n), but it's mildly nice and - unless there's a good reason not to - probably easier to just add the newline than to argue about it 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No, it's not really important, just a pet peeves.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good points, easy to modify the transpiler to add in the newlines next time around!

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The props order of python component shouldn't change.

@rpkyle

Copy link
Copy Markdown
ContributorAuthor

Building dashCoreComponents for R failed using the latest version of dash (0.36.0) with the following error:

Error with path src/components/Textarea.react.jsTypeError: Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at checkWarn (dash/dash/extract-meta.js:45:15)
at Object.entries.forEach (dash/dash/extract-meta.js:54:24)
at Array.forEach (<anonymous>)
at docstringWarning (dash/dash/extract-meta.js:53:31)
at parseFile (dash/dash/extract-meta.js:70:9)
at dirs.forEach.filename (dash/dash/extract-meta.js:92:17)
at Array.forEach (<anonymous>)
at collectMetadataRecursively (dash/dash/extract-meta.js:87:14)
at componentPaths.forEach.componentPath (dash/dash/extract-meta.js:21:5)
at Array.forEach (<anonymous>)

The inclusion of debounce in the TextArea component appears to be some 🍝. I have 🔪 it, and the TypeError no longer occurs.

The issue was apparent in the generation of the Python class for this component, as there was no property corresponding to this argument.

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.42.2Update R dashCoreComponents package to 0.43.1Jan 29, 2019
@rpkyle

Copy link
Copy Markdown
ContributorAuthor

The props order for python component shouldn't change.

@T4rk1n If you could look over the recent commit, that'd be great. Hopefully we're nearing 💃.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💃

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.43.1Update R dashCoreComponents package to 0.43.0Jan 29, 2019
@rpkyle
rpkyle merged commit 51ab115 into masterJan 29, 2019
@alexcjohnson
alexcjohnson deleted the 0.42.2-issue34 branch January 29, 2019 19:46
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

R version of Core components

3 participants

@rpkyle@alexcjohnson@T4rk1n
, '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
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Update R dashCoreComponents package to 0.43.0 - #439

Merged
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34
Jan 29, 2019
Merged

Update R dashCoreComponents package to 0.43.0#439
rpkyle merged 13 commits into
masterfrom
0.42.2-issue34

Conversation

@rpkyle

@rpkylerpkyle commented Jan 18, 2019

Copy link
Copy Markdown
Contributor

The JSON >> R 'transpiler' has been rewritten in Python, and was used to generate an installable R package for version 0.43.0 of dash-core-components. This PR closes#357.

@alexcjohnson@nicolaskruchten@T4rk1n@Marc-Andre-Rivet

Comment threaddash_core_components/Location.py Outdated
args = {k: _locals[k] for k in _explicit_args if k != 'children'}

for k in ['id']:
for k in [u'id']:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Where did this u (and in Store below) come from? Is this intentional, or a result of running the build script in py2 instead of py3?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I just re-ran the component generation in a virtualenv with Python 3, and it seems probable; the output is as before (rather than [u'id']).

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Just to wrap this up, the crux of the difference is that Python 3 does away with unicode and str is essentially unicode by default; in Python 2, importing via json.load will return Unicode strings. There are workarounds, and the one I've chosen to use is Mark Amery's byteify function.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Found a few minor issues with the new generation formatting, can open an issue for that and fix later.

"Upload"
"Tabs",
"Slider"
] No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline.

Comment threaddash_core_components/metadata.json Outdated
},
{
"name": "handleInterval",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Regenerated without indentation.

Comment threadR/coreChecklist.R
component$props <- filter_null(component$props)

structure(component, class = c('dash_component', 'list'))
} No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Generated without newline at end of file.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The newline isn't required for R scripts.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think newline is required for any language we use, yet in some cases we actually set our linters to force it. Why?

  • It's sometimes useful on the command line (otherwise if you cat a file for some reason you'll find your next prompt at the end of the last line of the file, rather than on a new line)
  • In some editors, the last line may get intermittently covered up by a horizontal scroll bar
  • Github adds 🚫in diffs and nobody wants to annoy Github!

I don't see this as a big deal (unless you have anything to add to this list @T4rk1n), but it's mildly nice and - unless there's a good reason not to - probably easier to just add the newline than to argue about it 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No, it's not really important, just a pet peeves.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good points, easy to modify the transpiler to add in the newlines next time around!

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The props order of python component shouldn't change.

@rpkyle

Copy link
Copy Markdown
ContributorAuthor

Building dashCoreComponents for R failed using the latest version of dash (0.36.0) with the following error:

Error with path src/components/Textarea.react.jsTypeError: Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at checkWarn (dash/dash/extract-meta.js:45:15)
at Object.entries.forEach (dash/dash/extract-meta.js:54:24)
at Array.forEach (<anonymous>)
at docstringWarning (dash/dash/extract-meta.js:53:31)
at parseFile (dash/dash/extract-meta.js:70:9)
at dirs.forEach.filename (dash/dash/extract-meta.js:92:17)
at Array.forEach (<anonymous>)
at collectMetadataRecursively (dash/dash/extract-meta.js:87:14)
at componentPaths.forEach.componentPath (dash/dash/extract-meta.js:21:5)
at Array.forEach (<anonymous>)

The inclusion of debounce in the TextArea component appears to be some 🍝. I have 🔪 it, and the TypeError no longer occurs.

The issue was apparent in the generation of the Python class for this component, as there was no property corresponding to this argument.

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.42.2Update R dashCoreComponents package to 0.43.1Jan 29, 2019
@rpkyle

Copy link
Copy Markdown
ContributorAuthor

The props order for python component shouldn't change.

@T4rk1n If you could look over the recent commit, that'd be great. Hopefully we're nearing 💃.

@T4rk1nT4rk1n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💃

@rpkylerpkyle changed the title Update R dashCoreComponents package to 0.43.1Update R dashCoreComponents package to 0.43.0Jan 29, 2019
@rpkyle
rpkyle merged commit 51ab115 into masterJan 29, 2019
@alexcjohnson
alexcjohnson deleted the 0.42.2-issue34 branch January 29, 2019 19:46
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

R version of Core components

3 participants

@rpkyle@alexcjohnson@T4rk1n