6 पॉइंट द्वारा GN⁺ 2023-08-20 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Textual एक framework है जो सरल Python API के साथ cross-platform user interface बनाने देता है, और apps को terminal या web browser में चलाने में सक्षम बनाता है
  • इसका API आधुनिक Python और web development की प्रगति के तत्वों को जोड़ता है, और अलग-अलग components तथा उन्नत testing framework के साथ long-term maintenance को support करता है
  • widget लाइब्रेरी button, tree control, data table, input, text area आदि प्रदान करती है, साथ ही लचीला layout system और pre-defined themes भी देती है
  • अंदरूनी रूप से यह एक asynchronous framework है, और चाहें तो async libraries के साथ integrate किया जा सकता है, लेकिन async के उपयोग को अनिवार्य नहीं बनाता
  • इसे pip install textual textual-dev से install किया जाता है, और python -m textual से demo चलाया जा सकता है
    • install किए बिना uvx --python 3.12 textual-demo से textual demo चलाया जा सकता है, लेकिन इस तरीके के लिए uv आवश्यक है
  • textual-dev package एक development console देता है जो दूसरे terminal से application से connect होता है, और system messages, events, log messages, तथा print output की जाँच को support करता है
  • Textual apps fuzzy search command palette प्रदान करती हैं, जिसे ctrl+p से खोला जा सकता है, और application के लिए custom commands के साथ extend किया जा सकता है
  • textual serve "python -m textual" से Textual apps को web पर serve किया जा सकता है, और Textual Web local serving के अलावा application serving को भी support करता है
  • Textual apps की system requirements कम हैं, इन्हें जहाँ Python चल सकता है वहाँ install किया जा सकता है, और desktop की आवश्यकता नहीं होती

1 टिप्पणियां

 
GN⁺ 2023-08-20
Hacker News की रायें
  • अभी मेरा पसंदीदा Textual डेमो https://github.com/1j01/textual-paint है
    यह टर्मिनल में चलने वाला काफ़ी अच्छा Microsoft Paint clone है

  • एक नया Python प्रोजेक्ट बनाते समय सबसे पहले जिन चीज़ों को जोड़ा, उनमें से एक https://github.com/Textualize/rich था
    टर्मिनल आउटपुट को अच्छा दिखाना इतना आसान है, इसलिए इसे चुना

    • मुझे command-line tools बनाना पसंद है और Textual का लुक भी अच्छा लगता है, लेकिन कुछ बार इस्तेमाल करने पर यह मेरे लिए थोड़ा भारी और कम लचीला लगा
      इसके उलट Rich शानदार है और डेवलपमेंट फ्लो को बहुत स्मूद बना देता है। बोल्ड, रंग, emoji, table जैसी सुविधाएँ तुरंत इस्तेमाल करने के लिए अच्छा API होना मुझे पसंद है
    • सच में बहुत सुंदर दिखता है; सोच रहा हूँ कि Go या Rust में भी ऐसी कोई लाइब्रेरी है क्या
  • काफ़ी शानदार दिखता है
    पहले जिस trading company में काम करता था, वहाँ अहम processes के लिए text UI बनाते समय lanterna(https://github.com/mabe02/lanterna/tree/master) इस्तेमाल किया था। यह ऐसा process था जो updated market data लेकर पिछले trading session और आज के बीच बदली चीज़ों को संभालता था, जैसे ticker name change (PCLN से BKNG), market cap में बदलाव की वजह से category change वगैरह
    ये ऐसे काम थे जिन्हें real-time system handle नहीं करता था, लेकिन जो इतने अक्सर होते थे या manually handle करने के लिए काफ़ी झंझट भरे थे। कंपनी में trading staff के लिए desktop UI था, लेकिन server UI जैसी कोई अवधारणा नहीं थी और servers headless थे
    frontend developers नहीं थे; backend, systems और data programmers कभी-कभी frontend छू लेते थे, इसलिए web UI बहुत simple या किसी खास use-case के हिसाब से ही बनी होती थी, और common tools भी नहीं थे
    अगर 2023 होता तो शायद create-react-app या next.js चुना होता, लेकिन on-call के दौरान tethered 4G के खराब SSH connection पर भी आसानी से access चाहिए था, इसलिए X11 forwarding या RDP को बाहर रखा। इसलिए project language Java में इस्तेमाल हो सकने वाला TUI builder ढूँढा
    Lanterna अच्छा इसलिए लगा क्योंकि इसमें Swing-based implementation था, जिससे IntelliJ में सीधे चला कर तेज़ी से iterate कर सकता था, और production environment में server वाली machine पर SSH से terminal चला सकता था
    Textual को भी देखते रहने का इरादा है कि इससे कुछ अच्छा बनाया जा सकता है या नहीं। अब भी web apps मुझे ज़्यादा पसंद नहीं हैं, क्योंकि browser के बजाय TUI या desktop GUI में बने functionally equivalent product की तुलना में नतीजा पाने तक की मेहनत ज़्यादा लगती है

  • अफ़सोस की बात है कि “rapid application development” वाली बात शायद library खुद पर भी लागू होती है
    हर दो हफ्ते में नया release आता है, और कुछ हद तक unpredictable जगहों पर टूटता है। Textual से prototype बनाना आसान है, लेकिन बाद में maintenance मुश्किल है

    • समझ सकता हूँ कि यह परेशान कर सकता है। Textual में लिखा code maintain करने की स्थिति में हूँ, इसलिए अच्छी तरह जानता हूँ
      हालांकि जब तक यह अभी 0.x version में है, हम इस बात का पूरा फायदा उठा रहे हैं कि जहाँ बेहतर approach साफ़ दिखती है वहाँ दिशा को थोड़ा-थोड़ा बदल सकें
      नया release निकालते समय breaking changes को जितना हो सके प्रमुख रूप से बताने की कोशिश करते हैं। अगर कोई workaround मुश्किल हो या फिर से काम करवाना कठिन हो, तो GitHub issue, discussions, या चाहें तो Discord पर भी मदद माँग सकते हैं
  • मैं Python में बहुत अनुभवी developer नहीं हूँ, इसलिए पूछना चाहता हूँ: इसे बड़े dependencies के बिना binary में बदलना कितना आसान है?
    Windows और Linux के लिए product install packages बनाने में मदद करने वाली कोई चीज़ ढूँढ रहा हूँ। customers को software install करने से पहले/बाद में INI file लिखने, DB connection check करने, HTTP server check करने जैसी configuration tasks करनी पड़ती हैं

    • विकल्प बहुत हैं, लेकिन इस क्षेत्र में मेरे अनुभव के हिसाब से PyInstaller सबसे आसान रहा
  • अच्छा दिखता है। अभी-अभी unicurses और Python से internal DevOps और change management app बनाया है; चलता तो है, लेकिन लगता नहीं कि अच्छी तरह scale होगा
    शुरुआत में TK और QT आज़माए थे, लेकिन दोनों की initial setup में कुछ अजीब बातें थीं। QT ठीक चलता है, मगर उपयोगी documentation थोड़ी कम है
    Textual requirements के बिल्कुल मुताबिक लगता है, इसलिए इसे ज़रूर आज़माऊँगा

  • सरसरी नज़र से https://textual.textualize.io/tutorial/ और https://github.com/Textualize/textual/blob/main/docs/example... देखा
    Go में आपने किन चीज़ों को सफलतापूर्वक इस्तेमाल किया है, यह जानना चाहता हूँ। Textualize आकर्षक इसलिए है क्योंकि यह काफ़ी web browser जैसा feel देता है, और scrollable table view तक साफ़-सुथरा है
    tview भी दिलचस्प लगता है, लेकिन उदाहरण के लिए brew install dbui देखें तो यह declarative और nested navigation की बजाय if KeyPress.A: do_something() जैसे imperative handling को खुद करने जैसा ज़्यादा लगता है
    शायद यह “हर चीज़ को control करने वाले” application-centric/SPA नज़रिए और “page में components जोड़कर उन्हें flow होने देने” वाले document-centric नज़रिए का फर्क भी हो सकता है। इस list की चीज़ों पर feedback जानना चाहूँगा: https://codeberg.org/tecras/awesome-go#advanced-console-uis

    • if KeyPress.A: do_something() जैसा imperative handling खुद करना” से मतलब यह है कि यह आजकल के trend की तरह message loop को छुपाता नहीं, बल्कि आपको सच में control करने देता है?
    • Bubble Tea बेहतरीन है
    • मैंने एक project में termui इस्तेमाल किया था और कोई शिकायत नहीं थी
      https://github.com/gizak/termui
  • Lazarus/Freepascal ही सही जवाब है। बाकी सब लगभग पीछे जाना है

  • क्या ये animations और transition effects सिर्फ pure ASCII text से implement किए गए हैं?

    • ठीक-ठीक कहें तो Unicode text है, लेकिन हाँ। सब text ही है
    • हाँ, terminal को धीमा महसूस कराने के लिए बनाया गया है /s
      गंभीरता से कहूँ तो “easing” और transitions को एक बार देखना चाहिए। 500ms के आसपास की delay अनुभवी लोगों को खटक सकती है, लेकिन app navigation सीखते समय context देने में मददगार लगती है
  • सोचता हूँ कि ऐसे projects टिके कैसे रहते हैं
    यह project 2 साल से development में है, लेकिन कोई revenue source नहीं दिखता। जानना चाहता हूँ कि developers को किसी रूप में compensation मिलता है या नहीं

    • इस project को seed investment मिला है। Textual founder ने इससे जुड़ा blog post लिखा है, पढ़ने लायक है
      https://www.willmcgugan.com/blog/tech/post/from-open-source-...
    • अधिकांश open source projects hobby के तौर पर develop/maintain किए जाते हैं, या किसी दूसरी paid job से जुड़े side project के रूप में चलते हैं
      market को भी ध्यान में रखना चाहिए। 2023 में terminal widget library के लिए पैसे देने वाले लोग सचमुच बहुत कम हैं