Metadata-Version: 2.1
Name: brython-server
Version: 2.1.3
Summary: Simple web based Python 3 IDE with Brython and Github integration
Home-page: https://github.com/tiggerntatie/brython-server
Author: Eric Dennison
Author-email: ericd@netdenizen.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
Requires-Dist: gunicorn (==19.9.0)
Requires-Dist: redis (>=3.2.1)
Requires-Dist: Flask-Session (>=0.3.1)
Requires-Dist: Flask-Caching (>=1.7.2)
Requires-Dist: Flask (>=0.12.3)
Requires-Dist: ggame (==1.0.10)

# Brython-Server

**Brython-Server** is a Flask-based web application focused on providing a simple
Python 3 development environment where source files are hosted on Github.

You can try [Brython-Server](http://runpython.com)
to get a feel for how it works.

## Brief Instructions

When the page loads, you can begin writing Python 3 code right away. To 
execute your code, press the **GO!** button.

### Github Support
To load Python 3 source code hosted on Github, you must should first log in to
Github with the **login** button. Github will ask you to authorize Brython-Server
in the next page. 

To load your source, paste the Github URL of your source file or repository 
into the text control at the top of the page. Press `<Enter>` or the **load** 
button to retrieve the source from Github.

You may make any changes you want to the source code and re-run it. If you would
like to save your work back to Github, just press the **commit** button.

### Google Drive Support
To load Python 3 source code stored in your Google Drive account, you first have
to give Brython-Server permission to access your account by pressing the 
**authorize** button with the Google Drive logo on it. Once you have logged in to
your Google account and given Brython-Server (or the website that runs on 
Brython-Server) permission to access your Drive files, you will have Google Drive 
a **load** and **save** buttons.

The Google Drive **load** button directs you to a standard Google Drive file picking
screen. Only compatible text files are available to pick. Once you have selected a file,
the URL for the file will be displayed in the upper left edit window. 

The Google Drive **save** button will upload any changes you have made to a file since
you downloaded it, but only if you own or have edit priveleges on the file. If you didn't
download a file first, the **save** button will prompt you for a new file name. 
In this case, Brython-Server will create a new file with your chosen name in the root
of your Google Drive.

If you previously **load**-ed or refreshed an existing file from Google Drive then the
**save** button will simply udate your file with any changes you have made since then.

Note: you may access (but not modify) any public Github or Google Drive Python source file without
logging in to Github, Google, or creating an account. You *can* edit the source file locally
in your browser but will not be able to commit any changes unless you are logged in
and have priveleges to do so.

### Turtle

Brython-Server supports the Python turtle to the extent that it is supported by
the underlying Brython interpreter. Its usage is simple, but slightly non-standard.
For example:

```python
from brythonserver import turtle
t = turtle.Turtle()
t.forward(100)
t.right(90)
t.forward(100)
turtle.done()
```

### Ggame

Brython-Server includes built-in support for the Ggame graphics engine. For example,
a trivial program from the 
[Ggame documentation](https://ggame.readthedocs.io/en/latest/introduction.html):

```python
from ggame import App, ImageAsset, Sprite

# Create a displayed object at 100,100 using an image asset
Sprite(ImageAsset("bunny.png"), (100, 100))
# Create the app, with a default stage
APP = App()
# Run the app
APP.run()
```

## Deployment

The best way to install Brython-Server is with pip and virtualenv. Create and 
activate your virtual environment then install Brython-Server with:


```python
pip install brython-server
```

### Requirements

The essential requirements for Brython-Server are met when you install with pip.
In addition, you will need to install 
[redis](https://redis.io/download) and, for a production install, 
[gunicorn](http://docs.gunicorn.org/en/stable/install.html).

Brython-Server will use [Brython](https://github.com/brython-dev/brython) as
its Python interpreter and and [Ggame](https://github.com/BrythonServer/ggame) 
as its graphics engine. The correct versions of each will automatically be used
when you install Brython-Server using pip.

### Environment Variables

A full Brython-Server installation that is capable of interacting with Github
should have several environment variables set for production use:

Required for Github functionality:
* githubtoken  (an optional Github personal access token)
* githubsecret (Github oauth secret)
* githubclientid (Github oauth client id)

Required for Google Drive functionality:
* googleclientid (Google Client ID)
* googleapikey (Google API Key. Brython Server requires the drive/files 
  and filePicker APIs)
* googleappid (Google Application ID)

Required for creating a "personalized" Brython-Server instance:
* sitetitle (A string that will be displayed as the "name of the site")
* sitecontact (An e-mail address to use for contact)
* siteurl (A full URL to the website)
* flasksecret (A Flask application secret key)

Required for connecting to a non-standard Redis instance:
* redishost (An IP address)
* redisport (The port number)

Note: to generate a unique, random Flask secret key, enter the following in
a Python console:


```python
>>> import os
>>> os.urandom(24)
```

Use the string that results as the value of the flasksecret environment 
variable.

### Execution

To run the server in stand-alone development mode (never in production!) 
execute (for example) from the Python 3 shell:

```python
Python 3.7.0 (default, Oct  4 2018, 21:19:26)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from brythonserver.main import APP
Update Brython scripts to verion 3.7.3
>>> APP.run(host="0.0.0.0", port=3000)
 * Serving Flask app "brythonserver.main" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:3000/ (Press CTRL+C to quit)
 ```

To run the server in a production environment, use gunicorn:

```bash
$ gunicorn -b 0.0.0.0:3000 -w 4   brythonserver.main:APP
```



