pscript
pscript copied to clipboard
PyScript glitches
@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 toFalseif that object has alengthproperty.- IIRC
x = x or 0does not work, sincetruthy()returnsFalseon a non-truthy and the original object otherwise. - ~
elif this_is_js():produces syntactically invalid JS.~ (fixed in #17) - ~using
range()brings in thepyfunc_range()even if used in for-loop.~ (fixed in #17) assert xdoes 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 def catch():~~ (fixed in #17)
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
lengthproperty, 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 withinforloops.
- 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 :)