PyScript glitches
almarklein opened this issue · 2 comments
@almarklein commented on Tue Jan 03 2017
This is an issue to collect "glitches" in PyScript, because it's so easy to forget about them. We'll have to see whether to fix or document each one individually.
if x
, with x an object can resolve toFalse
if that object has alength
property.- IIRC
x = x or 0
does not work, sincetruthy()
returnsFalse
on a non-truthy and the original object otherwise. (fixed in #17)elif this_is_js():
produces syntactically invalid JS.using(fixed in #17)range()
brings in thepyfunc_range()
even if used in for-loop.assert x
does not usetruthy()
- List comprehensions do not work with float arrays #5 (prev Flexx #396)
@Winand commented on Sun Jul 02 2017
(as of v0.4.1) pyscript allows (fixed in #17)def catch():
and this = ...
and produces invalid js
The latter is still possible, because a user might still want to use this
explicitly, and we only check use of names (not assignments) at this point.
@Winand commented on Fri Jul 07 2017
class Translator():
langs, q = {}, None
produces invalid js source (variables are defined globally):
stub2_ = [{}, null];
langs = stub2_[0];q = stub2_[1];
Issue: PyScript Glitches
I’ve reviewed the listed issues and would like to contribute the following observations:
-
if x with x as an object resolving to False:
- This occurs when the object has a
length
property, leading to unexpected behavior. A potential fix could involve refining thetruthy()
function to handle objects more accurately.
- This occurs when the object has a
-
x = x or 0:
- This behavior might be due to the way
truthy()
processes non-truthy values. Perhaps a conditional check could be added to prevent this from failing.
- This behavior might be due to the way
-
elif this_is_js() Syntax Error:
- As mentioned, this has been addressed in a previous fix (#17). I recommend updating the documentation to reflect this change.
-
range() Bringing in pyfunc_range():
- This could be optimized by conditionally importing
pyfunc_range()
only when needed, not just withinfor
loops.
- This could be optimized by conditionally importing
-
assert x Does Not Use truthy():
- The assertion might need an update to utilize
truthy()
for consistency across PyScript.
- The assertion might need an update to utilize
-
List Comprehensions with Float64Array:
- It appears that list comprehensions aren’t fully compatible with Float64Array. Fixing this would involve ensuring the correct type handling within the comprehension logic.
Next Steps:
I’m interested in working on some of these issues. Should I create separate pull requests for each, or would you prefer one comprehensive PR?
Looking forward to your feedback!
Thanks! I'd prefer small pr's for individual fixes.
I am happy to review and merge incoming pr's, but note that PScript is not very actively developed, so you should decide how much time you think is worth to 'investing' in this project :)