Metadata-Version: 2.1
Name: wuy
Version: 0.8.8
Summary: A simple module for making HTML GUI applications with python3/asyncio
Home-page: https://github.com/manatlan/wuy
Author: manatlan
Author-email: manatlan@gmail.com
License: UNKNOWN
Description: # wuy 
        
        If you have made a _super python tool_, and you want to add a GUI but without using qt/gtk/tk/wx/kivy/toga : you are in the right place ! Just re-use the local browser (chrome in app mode) as GUI, drived by **wuy**.
        
        <p align="center">
            <img src="https://github.com/manatlan/wuy/blob/master/wiki/capture.png"/><br/>
            <a href="https://github.com/manatlan/wuy/blob/master/web/askName.html">html</a> / 
            <a href="https://github.com/manatlan/wuy/blob/master/an_app2.py">python</a>
        </p>
        
        Basically, it's a python module which will act as a web server (http & websocket) and will open/manage a window for you ; providing a simple framework (js/py3 helpers).
        
        It lets you create your GUI with yours web skills (html/js/css or any js frameworks/libs), and re-use the power of python on server side.
        
        Technically, it's a python3 module, using asyncio and the marvellous [aiohttp](https://aiohttp.readthedocs.io/en/stable/), and (if present) the [uvloop](https://magic.io/blog/uvloop-blazing-fast-python-networking/), for the full speed ! The http server is here to serve static content (html, js, images ...). The websocket is here to simplify the communication (sync/async) between the window & the server. (rpc method to communicate from client to server, pubsub mechanism to communicate from server to clients, or from client to clients)
        
        In **app/window mode** : it will manage (open/close) the window for you ; using the **chrome app mode** ; if the websocket brokes : window & server will shutdown (close the window ; the server will shutdown, close the server ; the window will shutdown). You (or your clients) will not see a difference with classical GUI !
        
        In **server mode** : it will act as a classical web server ; and you can use as many clients/browsers as you want, from localhost or from anywhere else. Closing a socket ; just close the socket ;-). It can be hosted on the web, as long as the provider service use python3.
        
        [More on window/server differences](https://github.com/manatlan/wuy/blob/master/wiki/diff.md)
        
        In all cases : it will be pretty easy to produce/freeze an executable/windows (one file with all html/js embedded), using [pyinstaller/windows](https://github.com/manatlan/wuy/blob/master/BUILD.bat). And share your _super python tool_ to the world (wuy comes with [its own freezer (a wuy app !)](https://github.com/manatlan/wuy/tree/master/examples/wuy_freezer))!
        
        Since 0.6; **wuy** provide a js method to [proxify http requests](https://github.com/manatlan/wuy/blob/master/wiki/proxify.md), to avoid CORS troubles.
        
        It's, a little bit, the same thing as [python eel](https://github.com/ChrisKnott/Eel).
        
        
        
        **TODOs**:
        * In the future : will use [cefpython3](https://github.com/cztomczak/cefpython) if it's present, else it will use the local chrome installation. (you could choose to force cef/local use) (you can already try ; modify _wuy.py_, replace ChromeApp() by ChromeAppCef())
        * Write docs & examples
        
        ## The simplest example
        This is _the hello world_ of **wuy**
        
        ```python
        import wuy
        
        class helloWorld(wuy.Window):
            """ <button onclick="wuy.beep()">BEEP</button> """
            size=(100,100)
        
            def beep(self):
                print("\a BEEP !!!")
        
        helloWorld()
        ```
        
        ## To Test/Run
        
        Download [the zip from here](https://github.com/manatlan/wuy/archive/master.zip)
        
            $ pip3 install aiohttp winreg
            $ python3 -u an_app.py
        
        (_winreg_ is needed for windows only)
        
        It's an app !
        
        For a regular server example (many clients from anywhere on web)
        
            $ python3 -u a_server.py
        
        ## To Use
        
        Install the lib :
        
            $ pip3 install wuy winreg
        
        (_winreg_ is needed for windows only)
        
        **And follow the [official tuto](https://github.com/manatlan/wuy/blob/master/wiki/README.md)**.
        
        
        ## See Examples
        
        * [an_app](https://github.com/manatlan/wuy/blob/master/an_app.py) : all kind of tricks
        * [an_app2](https://github.com/manatlan/wuy/blob/master/an_app2.py) : an input box
        * [an_app3](https://github.com/manatlan/wuy/blob/master/an_app3.py) : an alert box with autodeclared js vars (chain'able windows)!
        * [an_app4](https://github.com/manatlan/wuy/blob/master/an_app4.py) : using sync & async rpc calls !
        * [an_app5](https://github.com/manatlan/wuy/blob/master/an_app5.py) : using async aiohttp.get (request content from web) & FULLSCREEN mode
        * [an_app6](https://github.com/manatlan/wuy/blob/master/an_app6.py) : progress bars (async)
        * [an_app7](https://github.com/manatlan/wuy/blob/master/an_app7.py) : html is inside the docstring ! (**SIMPLEST**)
        * [an_appVuejs](https://github.com/manatlan/wuy/blob/master/an_appVuejs.py) : using a vuejs app (and  a continuous push from server to client)
        * [a_server](https://github.com/manatlan/wuy/blob/master/a_server.py) : a server, tchat service for multiple clients
        
        Don't forget to have a look at [real examples](https://github.com/manatlan/wuy/tree/master/examples) too (real apps for real life)
        
        With [wuy.Window](https://github.com/manatlan/wuy/blob/master/wiki/api_py_window.md) for app (which open/manage a chrome window app)
        
        With [wuy.Server](https://github.com/manatlan/wuy/blob/master/wiki/api_py_server.md) for classic http/ws servers
        
        And client side (javascript), in all cases : use [wuy.js](https://github.com/manatlan/wuy/blob/master/wiki/api_js.md)
        
        [Learn More on differences between this two class](https://github.com/manatlan/wuy/blob/master/wiki/diff.md)
        
Keywords: gui,html,javascript,electron,asyncio,aiohttp,websocket
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.5
Description-Content-Type: text/markdown
