is something wrong with Python Shell (Google App)?

google-app-engine, python, shell

Solution

Short Answer

That is a known bug. Short answer:

- Include everything on one line: `mycolors.append('black'); print mycolors`

- Use my free software tool, App Engine Console. My code is derived from the shell and I have fixed this bug.

Long answer

The bug involves the way that state is stored in between every command you type. Web requests are stateless and request/response only; however the shell (and my console app) is supposed to feel like a stream of consciousness as it is at the traditional Python prompt.

The implementation is roughly this:

- Get a request from a browser which includes a line to execute

- Pull up the specific session which the browser is "in". Basically that is a module similar to `__main__` with some variable bindings.

- Execute the given line of code in that module's context

- Save state by looping through all variable bindings in the context and...

- If the variable is hitherto unseen, store its name and value in the datastore

- If not, ignore it. Here is the bug. You should actually check whether the variable has changed.

Problem

Python Shell - shell.appspot.com is acting weird? or am I missing something? ``` Google App Engine/1.3.0 Python 2.5.2 (r252:60911, Apr 7 2009, 17:42:26) [GCC 4.1.0] >>> mycolors = ['red','green','blue'] >>> mycolors.append('black') >>> print mycolors ['red', 'green', 'blue'] ``` But the below result is expected ``` ['red', 'green', 'blue', 'black'] ``` And also same with the dictionary data type. Thanks, Abhinay

Original source