Deprecate pyscript output attribute (#981)

* Deprecate pyscript output attribute

* Update pyscriptjs/src/components/pyscript.ts

Co-authored-by: Antonio Cuni <anto.cuni@gmail.com>

Co-authored-by: Antonio Cuni <anto.cuni@gmail.com>
This commit is contained in:
Fábio Rosado
2022-11-25 18:04:27 +00:00
committed by GitHub
parent b062efcf17
commit 446c131ccb
5 changed files with 33 additions and 14 deletions

View File

@@ -1,4 +1,4 @@
import { htmlDecode, ensureUniqueId } from '../utils';
import { htmlDecode, ensureUniqueId, showWarning } from '../utils';
import type { Runtime } from '../runtime';
import { getLogger } from '../logger';
import { pyExec } from '../pyexec';
@@ -10,6 +10,14 @@ const logger = getLogger('py-script');
export function make_PyScript(runtime: Runtime) {
class PyScript extends HTMLElement {
async connectedCallback() {
if (this.hasAttribute('output')) {
const deprecationMessage = (
"The 'output' attribute is deprecated and ignored. You should use " +
"'display()' to output the content to a specific element. " +
'For example display(myElement, target="divID").'
)
showWarning(deprecationMessage)
}
ensureUniqueId(this);
const pySrc = await this.getPySrc();
this.innerHTML = '';

View File

@@ -34,6 +34,18 @@ class TestOutput(PyScriptTest):
lines = [line for line in lines if line != ""] # remove empty lines
assert lines == ["hello 1", "hello 2", "hello 3"]
def test_output_attribute_shows_deprecated_warning(self):
self.pyscript_run(
"""
<py-script output="myDiv">
display('hello world')
</py-script>
<div id="mydiv"></div>
"""
)
warning_banner = self.page.locator(".alert-banner")
assert "The 'output' attribute is deprecated" in warning_banner.inner_text()
def test_target_attribute(self):
self.pyscript_run(
"""