Skip to content

Add line number context to stack traces when srcrefs are available - #133

Merged
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers
Oct 17, 2019
Merged

Add line number context to stack traces when srcrefs are available#133
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers

Conversation

@rpkyle

@rpkylerpkyle commented Oct 16, 2019

Copy link
Copy Markdown
Contributor

This PR proposes to inspect srcref attributes, when available, for additional context when debug=TRUE and errors are reported in the console or the dev tools UI in-browser. This information is populated in several settings:

  • for internal, packaged functions, when KeepSource is true in the package DESCRIPTION file
  • when applications are interactively loaded via source() and keep.source = TRUE (the default in most cases)
  • when Rscript is used to invoke source at the CLI, and keep.source = TRUE is explicitly provided as an argument to source (since keep.source does not default to TRUE in most cases)

Some function calls will not have srcref attributes populated, and for these no line number is currently displayed. We will continue to investigate whether this functionality can be provided.

The initially proposed implementation looks like this:

image

... and within the dev tools UI, it looks like this:

image

Since there are enclosing environments between the error handler within getStackTrace and the private field to which stack_message is passed, it is necessary to resolve the number of frames to ascend up the stack. The proposed countEnclosingFrames function is an initial attempt at introducing this functionality.

This PR also resolves an issue with the option to display apps within RStudio's viewer pane, and renames that option from viewer to use_viewer.

Closes#132. @chriddyp

@rpkylerpkyle added parity Modifications to improve parity across Dash implementations dash-stage-in_review dash-type-enhancement labels Oct 16, 2019
@rpkylerpkyle added this to the Dash v1.5.0 milestone Oct 16, 2019
@rpkylerpkyle self-assigned this Oct 16, 2019
@rpkylerpkyle changed the title 132 add line numbersAdd line number context to stack traces when srcrefs are availableOct 16, 2019
Comment threadR/utils.R Outdated
Comment threadR/utils.R Outdated

@alexcjohnsonalexcjohnson left a comment

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.

Looks fantastic, this will be really useful! 💃 after one small comment.

@rpkyle
rpkyle merged commit e8c533a into 125-hot-reloadingOct 17, 2019
@rpkyle
rpkyle deleted the 132-add-line-numbers branch October 17, 2019 19:21
rpkyle added a commit that referenced this pull request Nov 1, 2019
* Add line number context to stack traces when srcrefs are available (#133)
* ✨ Support line #s when in debug mode
* ✨ Add use_viewer option for RStudio
* 🚨 Add soft and hard hot reloading tests
@rpkylerpkyle mentioned this pull request Jan 3, 2020
rpkyle added a commit that referenced this pull request Jan 4, 2020
* Provide support for no_update in Dash for R (#111)
* Use dev_tools_prune_errors instead of pruned_errors (#113)
* Better handling for user-defined error conditions in debug mode (#116)
* Provide support for multiple outputs (#119)
* Provide support for hot reloading in Dash for R (#127)
* Implement support for clientside callbacks in Dash for R (#130)
* Add line number context to stack traces when srcrefs are available (#133)
* Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces (#137)
* Support for meta tags in Dash for R (#142)
* Fixes for hot reloading interval handling and refreshing apps within viewer pane (#148)
* Support for asynchronous loading/compression in Dash for R (#157)
* Support returning asset URLs via public method within Dash class (#160)
* Minor fix for get_asset_url + docs, add url_base_pathname (#161)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dash-type-enhancementparityModifications to improve parity across Dash implementations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@rpkyle@alexcjohnson@Marc-Andre-Rivet
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add line number context to stack traces when srcrefs are available by rpkyle · Pull Request #133 · plotly/dashR · GitHub
Skip to content

Add line number context to stack traces when srcrefs are available - #133

Merged
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers
Oct 17, 2019
Merged

Add line number context to stack traces when srcrefs are available#133
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers

Conversation

@rpkyle

@rpkylerpkyle commented Oct 16, 2019

Copy link
Copy Markdown
Contributor

This PR proposes to inspect srcref attributes, when available, for additional context when debug=TRUE and errors are reported in the console or the dev tools UI in-browser. This information is populated in several settings:

  • for internal, packaged functions, when KeepSource is true in the package DESCRIPTION file
  • when applications are interactively loaded via source() and keep.source = TRUE (the default in most cases)
  • when Rscript is used to invoke source at the CLI, and keep.source = TRUE is explicitly provided as an argument to source (since keep.source does not default to TRUE in most cases)

Some function calls will not have srcref attributes populated, and for these no line number is currently displayed. We will continue to investigate whether this functionality can be provided.

The initially proposed implementation looks like this:

image

... and within the dev tools UI, it looks like this:

image

Since there are enclosing environments between the error handler within getStackTrace and the private field to which stack_message is passed, it is necessary to resolve the number of frames to ascend up the stack. The proposed countEnclosingFrames function is an initial attempt at introducing this functionality.

This PR also resolves an issue with the option to display apps within RStudio's viewer pane, and renames that option from viewer to use_viewer.

Closes#132. @chriddyp

@rpkylerpkyle added parity Modifications to improve parity across Dash implementations dash-stage-in_review dash-type-enhancement labels Oct 16, 2019
@rpkylerpkyle added this to the Dash v1.5.0 milestone Oct 16, 2019
@rpkylerpkyle self-assigned this Oct 16, 2019
@rpkylerpkyle changed the title 132 add line numbersAdd line number context to stack traces when srcrefs are availableOct 16, 2019
Comment threadR/utils.R Outdated
Comment threadR/utils.R Outdated

@alexcjohnsonalexcjohnson left a comment

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.

Looks fantastic, this will be really useful! 💃 after one small comment.

@rpkyle
rpkyle merged commit e8c533a into 125-hot-reloadingOct 17, 2019
@rpkyle
rpkyle deleted the 132-add-line-numbers branch October 17, 2019 19:21
rpkyle added a commit that referenced this pull request Nov 1, 2019
* Add line number context to stack traces when srcrefs are available (#133)
* ✨ Support line #s when in debug mode
* ✨ Add use_viewer option for RStudio
* 🚨 Add soft and hard hot reloading tests
@rpkylerpkyle mentioned this pull request Jan 3, 2020
rpkyle added a commit that referenced this pull request Jan 4, 2020
* Provide support for no_update in Dash for R (#111)
* Use dev_tools_prune_errors instead of pruned_errors (#113)
* Better handling for user-defined error conditions in debug mode (#116)
* Provide support for multiple outputs (#119)
* Provide support for hot reloading in Dash for R (#127)
* Implement support for clientside callbacks in Dash for R (#130)
* Add line number context to stack traces when srcrefs are available (#133)
* Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces (#137)
* Support for meta tags in Dash for R (#142)
* Fixes for hot reloading interval handling and refreshing apps within viewer pane (#148)
* Support for asynchronous loading/compression in Dash for R (#157)
* Support returning asset URLs via public method within Dash class (#160)
* Minor fix for get_asset_url + docs, add url_base_pathname (#161)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dash-type-enhancementparityModifications to improve parity across Dash implementations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@rpkyle@alexcjohnson@Marc-Andre-Rivet
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add line number context to stack traces when srcrefs are available by rpkyle · Pull Request #133 · plotly/dashR · GitHub
Skip to content

Add line number context to stack traces when srcrefs are available - #133

Merged
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers
Oct 17, 2019
Merged

Add line number context to stack traces when srcrefs are available#133
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers

Conversation

@rpkyle

@rpkylerpkyle commented Oct 16, 2019

Copy link
Copy Markdown
Contributor

This PR proposes to inspect srcref attributes, when available, for additional context when debug=TRUE and errors are reported in the console or the dev tools UI in-browser. This information is populated in several settings:

  • for internal, packaged functions, when KeepSource is true in the package DESCRIPTION file
  • when applications are interactively loaded via source() and keep.source = TRUE (the default in most cases)
  • when Rscript is used to invoke source at the CLI, and keep.source = TRUE is explicitly provided as an argument to source (since keep.source does not default to TRUE in most cases)

Some function calls will not have srcref attributes populated, and for these no line number is currently displayed. We will continue to investigate whether this functionality can be provided.

The initially proposed implementation looks like this:

image

... and within the dev tools UI, it looks like this:

image

Since there are enclosing environments between the error handler within getStackTrace and the private field to which stack_message is passed, it is necessary to resolve the number of frames to ascend up the stack. The proposed countEnclosingFrames function is an initial attempt at introducing this functionality.

This PR also resolves an issue with the option to display apps within RStudio's viewer pane, and renames that option from viewer to use_viewer.

Closes#132. @chriddyp

@rpkylerpkyle added parity Modifications to improve parity across Dash implementations dash-stage-in_review dash-type-enhancement labels Oct 16, 2019
@rpkylerpkyle added this to the Dash v1.5.0 milestone Oct 16, 2019
@rpkylerpkyle self-assigned this Oct 16, 2019
@rpkylerpkyle changed the title 132 add line numbersAdd line number context to stack traces when srcrefs are availableOct 16, 2019
Comment threadR/utils.R Outdated
Comment threadR/utils.R Outdated

@alexcjohnsonalexcjohnson left a comment

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.

Looks fantastic, this will be really useful! 💃 after one small comment.

@rpkyle
rpkyle merged commit e8c533a into 125-hot-reloadingOct 17, 2019
@rpkyle
rpkyle deleted the 132-add-line-numbers branch October 17, 2019 19:21
rpkyle added a commit that referenced this pull request Nov 1, 2019
* Add line number context to stack traces when srcrefs are available (#133)
* ✨ Support line #s when in debug mode
* ✨ Add use_viewer option for RStudio
* 🚨 Add soft and hard hot reloading tests
@rpkylerpkyle mentioned this pull request Jan 3, 2020
rpkyle added a commit that referenced this pull request Jan 4, 2020
* Provide support for no_update in Dash for R (#111)
* Use dev_tools_prune_errors instead of pruned_errors (#113)
* Better handling for user-defined error conditions in debug mode (#116)
* Provide support for multiple outputs (#119)
* Provide support for hot reloading in Dash for R (#127)
* Implement support for clientside callbacks in Dash for R (#130)
* Add line number context to stack traces when srcrefs are available (#133)
* Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces (#137)
* Support for meta tags in Dash for R (#142)
* Fixes for hot reloading interval handling and refreshing apps within viewer pane (#148)
* Support for asynchronous loading/compression in Dash for R (#157)
* Support returning asset URLs via public method within Dash class (#160)
* Minor fix for get_asset_url + docs, add url_base_pathname (#161)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dash-type-enhancementparityModifications to improve parity across Dash implementations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Add line number context to stack traces when srcrefs are available - #133

Merged
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers
Oct 17, 2019
Merged

Add line number context to stack traces when srcrefs are available#133
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers

Conversation

@rpkyle

@rpkylerpkyle commented Oct 16, 2019

Copy link
Copy Markdown
Contributor

This PR proposes to inspect srcref attributes, when available, for additional context when debug=TRUE and errors are reported in the console or the dev tools UI in-browser. This information is populated in several settings:

  • for internal, packaged functions, when KeepSource is true in the package DESCRIPTION file
  • when applications are interactively loaded via source() and keep.source = TRUE (the default in most cases)
  • when Rscript is used to invoke source at the CLI, and keep.source = TRUE is explicitly provided as an argument to source (since keep.source does not default to TRUE in most cases)

Some function calls will not have srcref attributes populated, and for these no line number is currently displayed. We will continue to investigate whether this functionality can be provided.

The initially proposed implementation looks like this:

image

... and within the dev tools UI, it looks like this:

image

Since there are enclosing environments between the error handler within getStackTrace and the private field to which stack_message is passed, it is necessary to resolve the number of frames to ascend up the stack. The proposed countEnclosingFrames function is an initial attempt at introducing this functionality.

This PR also resolves an issue with the option to display apps within RStudio's viewer pane, and renames that option from viewer to use_viewer.

Closes#132. @chriddyp

@rpkylerpkyle added parity Modifications to improve parity across Dash implementations dash-stage-in_review dash-type-enhancement labels Oct 16, 2019
@rpkylerpkyle added this to the Dash v1.5.0 milestone Oct 16, 2019
@rpkylerpkyle self-assigned this Oct 16, 2019
@rpkylerpkyle changed the title 132 add line numbersAdd line number context to stack traces when srcrefs are availableOct 16, 2019
Comment threadR/utils.R Outdated
Comment threadR/utils.R Outdated

@alexcjohnsonalexcjohnson left a comment

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.

Looks fantastic, this will be really useful! 💃 after one small comment.

@rpkyle
rpkyle merged commit e8c533a into 125-hot-reloadingOct 17, 2019
@rpkyle
rpkyle deleted the 132-add-line-numbers branch October 17, 2019 19:21
rpkyle added a commit that referenced this pull request Nov 1, 2019
* Add line number context to stack traces when srcrefs are available (#133)
* ✨ Support line #s when in debug mode
* ✨ Add use_viewer option for RStudio
* 🚨 Add soft and hard hot reloading tests
@rpkylerpkyle mentioned this pull request Jan 3, 2020
rpkyle added a commit that referenced this pull request Jan 4, 2020
* Provide support for no_update in Dash for R (#111)
* Use dev_tools_prune_errors instead of pruned_errors (#113)
* Better handling for user-defined error conditions in debug mode (#116)
* Provide support for multiple outputs (#119)
* Provide support for hot reloading in Dash for R (#127)
* Implement support for clientside callbacks in Dash for R (#130)
* Add line number context to stack traces when srcrefs are available (#133)
* Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces (#137)
* Support for meta tags in Dash for R (#142)
* Fixes for hot reloading interval handling and refreshing apps within viewer pane (#148)
* Support for asynchronous loading/compression in Dash for R (#157)
* Support returning asset URLs via public method within Dash class (#160)
* Minor fix for get_asset_url + docs, add url_base_pathname (#161)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dash-type-enhancementparityModifications to improve parity across Dash implementations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@rpkyle@alexcjohnson@Marc-Andre-Rivet
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add line number context to stack traces when srcrefs are available by rpkyle · Pull Request #133 · plotly/dashR · GitHub
Skip to content

Add line number context to stack traces when srcrefs are available - #133

Merged
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers
Oct 17, 2019
Merged

Add line number context to stack traces when srcrefs are available#133
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers

Conversation

@rpkyle

@rpkylerpkyle commented Oct 16, 2019

Copy link
Copy Markdown
Contributor

This PR proposes to inspect srcref attributes, when available, for additional context when debug=TRUE and errors are reported in the console or the dev tools UI in-browser. This information is populated in several settings:

  • for internal, packaged functions, when KeepSource is true in the package DESCRIPTION file
  • when applications are interactively loaded via source() and keep.source = TRUE (the default in most cases)
  • when Rscript is used to invoke source at the CLI, and keep.source = TRUE is explicitly provided as an argument to source (since keep.source does not default to TRUE in most cases)

Some function calls will not have srcref attributes populated, and for these no line number is currently displayed. We will continue to investigate whether this functionality can be provided.

The initially proposed implementation looks like this:

image

... and within the dev tools UI, it looks like this:

image

Since there are enclosing environments between the error handler within getStackTrace and the private field to which stack_message is passed, it is necessary to resolve the number of frames to ascend up the stack. The proposed countEnclosingFrames function is an initial attempt at introducing this functionality.

This PR also resolves an issue with the option to display apps within RStudio's viewer pane, and renames that option from viewer to use_viewer.

Closes#132. @chriddyp

@rpkylerpkyle added parity Modifications to improve parity across Dash implementations dash-stage-in_review dash-type-enhancement labels Oct 16, 2019
@rpkylerpkyle added this to the Dash v1.5.0 milestone Oct 16, 2019
@rpkylerpkyle self-assigned this Oct 16, 2019
@rpkylerpkyle changed the title 132 add line numbersAdd line number context to stack traces when srcrefs are availableOct 16, 2019
Comment threadR/utils.R Outdated
Comment threadR/utils.R Outdated

@alexcjohnsonalexcjohnson left a comment

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.

Looks fantastic, this will be really useful! 💃 after one small comment.

@rpkyle
rpkyle merged commit e8c533a into 125-hot-reloadingOct 17, 2019
@rpkyle
rpkyle deleted the 132-add-line-numbers branch October 17, 2019 19:21
rpkyle added a commit that referenced this pull request Nov 1, 2019
* Add line number context to stack traces when srcrefs are available (#133)
* ✨ Support line #s when in debug mode
* ✨ Add use_viewer option for RStudio
* 🚨 Add soft and hard hot reloading tests
@rpkylerpkyle mentioned this pull request Jan 3, 2020
rpkyle added a commit that referenced this pull request Jan 4, 2020
* Provide support for no_update in Dash for R (#111)
* Use dev_tools_prune_errors instead of pruned_errors (#113)
* Better handling for user-defined error conditions in debug mode (#116)
* Provide support for multiple outputs (#119)
* Provide support for hot reloading in Dash for R (#127)
* Implement support for clientside callbacks in Dash for R (#130)
* Add line number context to stack traces when srcrefs are available (#133)
* Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces (#137)
* Support for meta tags in Dash for R (#142)
* Fixes for hot reloading interval handling and refreshing apps within viewer pane (#148)
* Support for asynchronous loading/compression in Dash for R (#157)
* Support returning asset URLs via public method within Dash class (#160)
* Minor fix for get_asset_url + docs, add url_base_pathname (#161)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dash-type-enhancementparityModifications to improve parity across Dash implementations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@rpkyle@alexcjohnson@Marc-Andre-Rivet
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add line number context to stack traces when srcrefs are available by rpkyle · Pull Request #133 · plotly/dashR · GitHub
Skip to content

Add line number context to stack traces when srcrefs are available - #133

Merged
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers
Oct 17, 2019
Merged

Add line number context to stack traces when srcrefs are available#133
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers

Conversation

@rpkyle

@rpkylerpkyle commented Oct 16, 2019

Copy link
Copy Markdown
Contributor

This PR proposes to inspect srcref attributes, when available, for additional context when debug=TRUE and errors are reported in the console or the dev tools UI in-browser. This information is populated in several settings:

  • for internal, packaged functions, when KeepSource is true in the package DESCRIPTION file
  • when applications are interactively loaded via source() and keep.source = TRUE (the default in most cases)
  • when Rscript is used to invoke source at the CLI, and keep.source = TRUE is explicitly provided as an argument to source (since keep.source does not default to TRUE in most cases)

Some function calls will not have srcref attributes populated, and for these no line number is currently displayed. We will continue to investigate whether this functionality can be provided.

The initially proposed implementation looks like this:

image

... and within the dev tools UI, it looks like this:

image

Since there are enclosing environments between the error handler within getStackTrace and the private field to which stack_message is passed, it is necessary to resolve the number of frames to ascend up the stack. The proposed countEnclosingFrames function is an initial attempt at introducing this functionality.

This PR also resolves an issue with the option to display apps within RStudio's viewer pane, and renames that option from viewer to use_viewer.

Closes#132. @chriddyp

@rpkylerpkyle added parity Modifications to improve parity across Dash implementations dash-stage-in_review dash-type-enhancement labels Oct 16, 2019
@rpkylerpkyle added this to the Dash v1.5.0 milestone Oct 16, 2019
@rpkylerpkyle self-assigned this Oct 16, 2019
@rpkylerpkyle changed the title 132 add line numbersAdd line number context to stack traces when srcrefs are availableOct 16, 2019
Comment threadR/utils.R Outdated
Comment threadR/utils.R Outdated

@alexcjohnsonalexcjohnson left a comment

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.

Looks fantastic, this will be really useful! 💃 after one small comment.

@rpkyle
rpkyle merged commit e8c533a into 125-hot-reloadingOct 17, 2019
@rpkyle
rpkyle deleted the 132-add-line-numbers branch October 17, 2019 19:21
rpkyle added a commit that referenced this pull request Nov 1, 2019
* Add line number context to stack traces when srcrefs are available (#133)
* ✨ Support line #s when in debug mode
* ✨ Add use_viewer option for RStudio
* 🚨 Add soft and hard hot reloading tests
@rpkylerpkyle mentioned this pull request Jan 3, 2020
rpkyle added a commit that referenced this pull request Jan 4, 2020
* Provide support for no_update in Dash for R (#111)
* Use dev_tools_prune_errors instead of pruned_errors (#113)
* Better handling for user-defined error conditions in debug mode (#116)
* Provide support for multiple outputs (#119)
* Provide support for hot reloading in Dash for R (#127)
* Implement support for clientside callbacks in Dash for R (#130)
* Add line number context to stack traces when srcrefs are available (#133)
* Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces (#137)
* Support for meta tags in Dash for R (#142)
* Fixes for hot reloading interval handling and refreshing apps within viewer pane (#148)
* Support for asynchronous loading/compression in Dash for R (#157)
* Support returning asset URLs via public method within Dash class (#160)
* Minor fix for get_asset_url + docs, add url_base_pathname (#161)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dash-type-enhancementparityModifications to improve parity across Dash implementations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@rpkyle@alexcjohnson@Marc-Andre-Rivet
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add line number context to stack traces when srcrefs are available by rpkyle · Pull Request #133 · plotly/dashR · GitHub
Skip to content

Add line number context to stack traces when srcrefs are available - #133

Merged
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers
Oct 17, 2019
Merged

Add line number context to stack traces when srcrefs are available#133
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers

Conversation

@rpkyle

@rpkylerpkyle commented Oct 16, 2019

Copy link
Copy Markdown
Contributor

This PR proposes to inspect srcref attributes, when available, for additional context when debug=TRUE and errors are reported in the console or the dev tools UI in-browser. This information is populated in several settings:

  • for internal, packaged functions, when KeepSource is true in the package DESCRIPTION file
  • when applications are interactively loaded via source() and keep.source = TRUE (the default in most cases)
  • when Rscript is used to invoke source at the CLI, and keep.source = TRUE is explicitly provided as an argument to source (since keep.source does not default to TRUE in most cases)

Some function calls will not have srcref attributes populated, and for these no line number is currently displayed. We will continue to investigate whether this functionality can be provided.

The initially proposed implementation looks like this:

image

... and within the dev tools UI, it looks like this:

image

Since there are enclosing environments between the error handler within getStackTrace and the private field to which stack_message is passed, it is necessary to resolve the number of frames to ascend up the stack. The proposed countEnclosingFrames function is an initial attempt at introducing this functionality.

This PR also resolves an issue with the option to display apps within RStudio's viewer pane, and renames that option from viewer to use_viewer.

Closes#132. @chriddyp

@rpkylerpkyle added parity Modifications to improve parity across Dash implementations dash-stage-in_review dash-type-enhancement labels Oct 16, 2019
@rpkylerpkyle added this to the Dash v1.5.0 milestone Oct 16, 2019
@rpkylerpkyle self-assigned this Oct 16, 2019
@rpkylerpkyle changed the title 132 add line numbersAdd line number context to stack traces when srcrefs are availableOct 16, 2019
Comment threadR/utils.R Outdated
Comment threadR/utils.R Outdated

@alexcjohnsonalexcjohnson left a comment

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.

Looks fantastic, this will be really useful! 💃 after one small comment.

@rpkyle
rpkyle merged commit e8c533a into 125-hot-reloadingOct 17, 2019
@rpkyle
rpkyle deleted the 132-add-line-numbers branch October 17, 2019 19:21
rpkyle added a commit that referenced this pull request Nov 1, 2019
* Add line number context to stack traces when srcrefs are available (#133)
* ✨ Support line #s when in debug mode
* ✨ Add use_viewer option for RStudio
* 🚨 Add soft and hard hot reloading tests
@rpkylerpkyle mentioned this pull request Jan 3, 2020
rpkyle added a commit that referenced this pull request Jan 4, 2020
* Provide support for no_update in Dash for R (#111)
* Use dev_tools_prune_errors instead of pruned_errors (#113)
* Better handling for user-defined error conditions in debug mode (#116)
* Provide support for multiple outputs (#119)
* Provide support for hot reloading in Dash for R (#127)
* Implement support for clientside callbacks in Dash for R (#130)
* Add line number context to stack traces when srcrefs are available (#133)
* Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces (#137)
* Support for meta tags in Dash for R (#142)
* Fixes for hot reloading interval handling and refreshing apps within viewer pane (#148)
* Support for asynchronous loading/compression in Dash for R (#157)
* Support returning asset URLs via public method within Dash class (#160)
* Minor fix for get_asset_url + docs, add url_base_pathname (#161)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dash-type-enhancementparityModifications to improve parity across Dash implementations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Add line number context to stack traces when srcrefs are available - #133

Merged
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers
Oct 17, 2019
Merged

Add line number context to stack traces when srcrefs are available#133
rpkyle merged 7 commits into
125-hot-reloadingfrom
132-add-line-numbers

Conversation

@rpkyle

@rpkylerpkyle commented Oct 16, 2019

Copy link
Copy Markdown
Contributor

This PR proposes to inspect srcref attributes, when available, for additional context when debug=TRUE and errors are reported in the console or the dev tools UI in-browser. This information is populated in several settings:

  • for internal, packaged functions, when KeepSource is true in the package DESCRIPTION file
  • when applications are interactively loaded via source() and keep.source = TRUE (the default in most cases)
  • when Rscript is used to invoke source at the CLI, and keep.source = TRUE is explicitly provided as an argument to source (since keep.source does not default to TRUE in most cases)

Some function calls will not have srcref attributes populated, and for these no line number is currently displayed. We will continue to investigate whether this functionality can be provided.

The initially proposed implementation looks like this:

image

... and within the dev tools UI, it looks like this:

image

Since there are enclosing environments between the error handler within getStackTrace and the private field to which stack_message is passed, it is necessary to resolve the number of frames to ascend up the stack. The proposed countEnclosingFrames function is an initial attempt at introducing this functionality.

This PR also resolves an issue with the option to display apps within RStudio's viewer pane, and renames that option from viewer to use_viewer.

Closes#132. @chriddyp

@rpkylerpkyle added parity Modifications to improve parity across Dash implementations dash-stage-in_review dash-type-enhancement labels Oct 16, 2019
@rpkylerpkyle added this to the Dash v1.5.0 milestone Oct 16, 2019
@rpkylerpkyle self-assigned this Oct 16, 2019
@rpkylerpkyle changed the title 132 add line numbersAdd line number context to stack traces when srcrefs are availableOct 16, 2019
Comment threadR/utils.R Outdated
Comment threadR/utils.R Outdated

@alexcjohnsonalexcjohnson left a comment

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.

Looks fantastic, this will be really useful! 💃 after one small comment.

@rpkyle
rpkyle merged commit e8c533a into 125-hot-reloadingOct 17, 2019
@rpkyle
rpkyle deleted the 132-add-line-numbers branch October 17, 2019 19:21
rpkyle added a commit that referenced this pull request Nov 1, 2019
* Add line number context to stack traces when srcrefs are available (#133)
* ✨ Support line #s when in debug mode
* ✨ Add use_viewer option for RStudio
* 🚨 Add soft and hard hot reloading tests
@rpkylerpkyle mentioned this pull request Jan 3, 2020
rpkyle added a commit that referenced this pull request Jan 4, 2020
* Provide support for no_update in Dash for R (#111)
* Use dev_tools_prune_errors instead of pruned_errors (#113)
* Better handling for user-defined error conditions in debug mode (#116)
* Provide support for multiple outputs (#119)
* Provide support for hot reloading in Dash for R (#127)
* Implement support for clientside callbacks in Dash for R (#130)
* Add line number context to stack traces when srcrefs are available (#133)
* Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces (#137)
* Support for meta tags in Dash for R (#142)
* Fixes for hot reloading interval handling and refreshing apps within viewer pane (#148)
* Support for asynchronous loading/compression in Dash for R (#157)
* Support returning asset URLs via public method within Dash class (#160)
* Minor fix for get_asset_url + docs, add url_base_pathname (#161)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dash-type-enhancementparityModifications to improve parity across Dash implementations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@rpkyle@alexcjohnson@Marc-Andre-Rivet