3 पॉइंट द्वारा GN⁺ 2024-08-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • PyScript एक ओपन सोर्स प्लेटफ़ॉर्म है जो ब्राउज़र में Python कोड चलाने देता है, जिससे वेब पेज खुद Python execution environment बन सकता है
  • यह वेब की सार्वभौमिकता और Python ecosystem को जोड़कर यह बात सामने रखता है कि जहां ब्राउज़र है, वहां Python चलाया जा सकता है
  • जटिल installation के बिना ऐप ब्राउज़र में चलते हैं, इसलिए Python के सीखने में आसान syntax से web-based apps बनाए जा सकते हैं
  • कोड user के ब्राउज़र में चलता है, जिससे महंगे infrastructure का बोझ घटता है, और output को वेब के URL के रूप में share किया जा सकता है
  • यह beginners और advanced users दोनों को लक्ष्य करता है, और आसानी, अभिव्यक्ति-क्षमता, scalability, shareability, universality, security और power को अपनी मुख्य विशेषताएं मानता है

ब्राउज़र के भीतर Python execution environment

  • PyScript ब्राउज़र में Python चलाने के लिए एक ओपन सोर्स प्लेटफ़ॉर्म है
  • HTML के अंदर script type="py" का उपयोग करके Python कोड चलाने का रूप इसका एक उदाहरण है
    • उदाहरण कोड ब्राउज़र document के अंदर print('You can!') चलाता है
  • वेब और Python, इन दो technology ecosystems को जोड़ना PyScript की मुख्य दिशा है
    • वेब दुनिया भर में एक सार्वभौमिक computing platform है
    • Python दुनिया की लोकप्रिय programming languages में से एक है
  • परिणामस्वरूप यह संदेश प्रमुखता से रखता है कि जहां ब्राउज़र है, वहां Python चलाया जा सकता है

शुरू करने का तरीका और प्लेटफ़ॉर्म की विशेषताएं

  • PyScript.com पर इसे मुफ्त में आसानी से आज़माया जा सकता है
  • Documentation beginners और advanced users दोनों के लिए है
  • Community resources में देखा जा सकता है कि PyScript से क्या बनाया जा सकता है
  • Discord के जरिए अन्य PyScript users से जुड़ा जा सकता है
  • PyScript जिन विशेषताओं को सामने रखता है, वे इस प्रकार हैं
    • Easy: जटिल installation के बिना apps ब्राउज़र में चलते हैं
    • Expressive: Python जैसी powerful, लोकप्रिय और सीखने में आसान भाषा से apps बनाए जा सकते हैं
    • Scalable: कोड user के ब्राउज़र में चलता है, इसलिए महंगा infrastructure जरूरी नहीं होता
    • Shareable: applications को वेब के URL के रूप में share किया जा सकता है
    • Universal: जहां ब्राउज़र चलता है, वहां कोड भी चलता है
    • Secure: ब्राउज़र जैसे verified computing platform पर काम करता है
    • Powerful: वेब और Python की खूबियों का साथ में उपयोग करता है

1 टिप्पणियां

 
GN⁺ 2024-08-17
Hacker News की राय
  • अगर आप उपयोग का उदाहरण देखना चाहते हैं, तो Dallas अपराध सांख्यिकी Panel डैशबोर्ड यहां देख सकते हैं: https://crimede-coder.com/graphs/Dallas_Dashboard
    शुरू होने में करीब 1 मिनट लगता है, जिसमें कई Python लाइब्रेरी इंस्टॉल करना और बाहरी 5MB डेटासेट लोड करना शामिल है। एक बार खुल जाने के बाद यह काफी responsive है और iPhone पर भी अच्छी तरह चलता है।
    जिन कई कंपनियों के साथ मैं काम करता हूं, वे Tableau के free version का इस्तेमाल करते हुए डेटा को manually refresh करती हैं, क्योंकि free version data store से direct connection की अनुमति नहीं देता। यह एक free alternative है, और GitHub Actions से compressed CSV file बनाकर environment में import कराने की व्यवस्था की गई है।

    • Memory usage काफी ज्यादा दिखता है। browser task manager के हिसाब से यह tab 657MB इस्तेमाल कर रहा है, जबकि ज्यादातर अन्य tabs करीब 25–70MB लेते हैं।
    • आपने कहा था “शुरू होने में करीब 1 मिनट लगता है”, लेकिन 2023 की शरद ऋतु वाले iPad Pro 13-inch पर NYC area broadband और WiFi से खोलने पर link click करने के बाद spinner गायब होने और filters active होने तक करीब 8 सेकंड लगे।
      मुझे लगा था कि iPad के Safari के अंदर Panel app चलाने लायक Python bootstrap करने में 8 सेकंड से कहीं ज्यादा समय लगेगा। Shift refresh में करीब 6 सेकंड लगे।
    • उत्सुकता है कि bottleneck क्या था। घरेलू broadband पर करीब 20 सेकंड लगे।
    • काफी बढ़िया है। crime statistics dashboard में रुचि रखने वालों के लिए NYPD वाला भी छोड़ रहा हूं: https://compstat.nypdonline.org/
    • site अच्छी है। अगर “कई कंपनियां Tableau free version इस्तेमाल करती हैं और डेटा manually refresh करती हैं”, तो सोचता हूं कि वे React या Angular जैसी चीजें क्यों नहीं इस्तेमाल करतीं।
      शायद डेटा analysis के कारण Python चाहिए, और server cost की वजह से इसे server-side पर चलाना नहीं चाहते—ऐसी समस्या है क्या, यह भी जानना चाहूंगा।
  • homepage देखकर भी उलझन हुई, और docs पढ़ने के बाद भी ठीक-ठीक समझ नहीं आया कि यह है क्या।
    थोड़ा खुद आज़माया तो website में डालने पर “Hello World” दिखा सका। यह ऐसा script लगता है जो type="py" वाले scripts ढूंढता है और Pyodide के जरिए Python से JavaScript में transpile करता है।
    लेकिन homepage demo REPL है और title में “platform” लिखा है, इसलिए अब भी confusion है।

    • “Python को JavaScript में transpile करता है” कहने के बजाय, PyScript तो Python code को सीधे execute करता हुआ लगता है। यह WebAssembly में compile किए गए Python interpreter का इस्तेमाल करता है, और Pyodide का CPython या MicroPython उपयोग करता है।
    • “platform” जैसे अस्पष्ट और ढीले-ढाले term का इस्तेमाल मुझे पसंद नहीं। बस इतना कह देना चाहिए कि यह Pyodide से Python के लिए script tag के अंदर code evaluate करने वाला framework है।
    • मैंने docs या source code सच में पढ़ा नहीं है, लेकिन लगता है js package असली window object पर map होता होगा और किसी Proxy object के जरिए DOM methods call करने वाली API होगी।
    • terminal से जुड़ी जानकारी यहां मिली: https://docs.pyscript.net/2024.8.2/user-guide/terminal/
      उम्मीद थी कि browser console में Python चला पाऊंगा।
  • यह Pyodide से कैसे अलग है? https://pyodide.org/en/stable/

    • Pyodide, CPython को WebAssembly platform पर port किया गया रूप है। PyScript एक framework है जो Pyodide का इस्तेमाल करके browser में Python applications develop करने देता है। elevator pitch में कहें तो “Pyodide के जरिए script tag के अंदर Python” जैसा है।
    • यह Pyodide का इस्तेमाल करता है। भले ही असल में transpiler न हो, फिर भी यह Python से JS की ओर जाने वाले transpiler जैसा ज्यादा महसूस होता है, और Python से browser apps बनाने के लिए है। इसलिए इसे Pyodide + browser API माना जा सकता है।
    • Pyodide एक runtime है।
      PyScript, Pyodide या MicroPython इस्तेमाल कर सकता है, और MicroPython वाकई काफी छोटा है। runtime के ऊपर PyScript सिर्फ Python code चलाने से आगे बढ़कर, web programming में Python को सच में इस्तेमाल करने के लिए convenience features और quality-of-life improvements देता है।
    • wrapper है।
  • हाल में PyScript से Python CLI apps को browser में चलाने वाली दिशा में काफी गहराई से देखा।
    यह पूरे समय hacky लगा, खासकर जब dependencies आ जाती हैं। Pydantic 2.x इस्तेमाल नहीं कर सका, इसलिए workaround wrapper class बनानी पड़ी, और सारी logic Python files में डालने की कोशिश की, लेकिन कुछ features missing थे इसलिए कुछ हिस्सा JavaScript में डालना पड़ा।
    Python code के ऊपर simple UI और custom UI logic लगानी हो तो ठीक हो सकता है, लेकिन Streamlit या Gradio ज्यादा सही हो सकते हैं।
    GitHub repository: https://github.com/data-catering/data-contract-playground
    website: https://data-catering.github.io/data-contract-playground/

    • कई Python projects के Rust-ification के चलते Python को हर जगह इस्तेमाल करना जरूरत से ज्यादा मुश्किल होता जा रहा है।
  • वास्तविक use cases ढूंढना मुश्किल है। अगर आप machine learning model चलाना चाहते हैं, तो ONNX में build कर सकते हैं: https://onnxruntime.ai/docs/tutorials/web/
    सोचता हूं कि JS/TS के बजाय browser-based app बनाने में यह कितना efficient होगा।

    • कुछ लोग शायद JS/TS को छूना ही न चाहें।
    • programming language को deployment environment से अलग होना चाहिए।
  • Firefox में script लिखकर browser को manipulate कर पाना अच्छा होगा। मतलब GET के समय, सभी GET के बाद, JavaScript evaluation से पहले/बाद जैसे किसी भी मनचाहे चरण में evaluation करना
    सोच रहा हूँ कि क्या ऐसा कर सकने वाला कोई tool है, जिसमें Python की सभी खूबियाँ भी host से access की जा सकें

  • क्या यह Brython जैसा ही concept नहीं है? BRowser pYTHON: https://brython.info/
    https://github.com/brython-dev/brython

    • Brython browser के अंदर Python implementation से ज़्यादा Python → JS converter जैसा दिखता है। अंतिम नतीजा मिलता-जुलता है, लेकिन काम करने का तरीका पूरी तरह अलग है
      https://yasoob.me/2019/05/22/running-python-in-the-browser/
  • थोड़ा brag करूँ तो, मैंने PyScript का इस्तेमाल करके एक ज़्यादा opinionated reactive frontend framework बनाया है। यह थोड़ा Vue.js से inspired है: https://puepy.dev

  • पहले मैंने इससे एक Markdown renderer बनाया था। बहुत simple source code यहाँ देखा जा सकता है: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
    app शायद mobile पर ठीक से न चले, लेकिन desktop पर ठीक रहेगा। Django में लिखे जा रहे blog application में मैंने यह code इस्तेमाल किया था

  • किसी भी WASM setup में आखिरकार CORS की वजह से बहुत सारी APIs call करने या sites scrape करने में बड़ी limitation आ जाती है, जो बहुत irritating है
    बेशक CORS, XSS जैसी चीज़ों को रोकने के लिए अहम है, लेकिन CORS हटाने वाला proxy खड़ा करने के अलावा कोई और तरीका हो तो अच्छा होगा। ऐसा करने पर आपके पास residential IP के बजाय ऐसा IP रह जाता है जिसके block होने की संभावना ज़्यादा होती है

    • क्या यह समस्या सिर्फ तब होती है जब COOP और COEP से cross-origin isolation enabled हो?