On Tue, Sep 11, 2012 at 4:00 PM, Richard Arrano <[email protected]> wrote: > What I'm asking more specifically is what does App Engine do, if anything, > to os.putenv? Because using the App Engine console, I can do things like: > > os.environ["x"] = ndb.Model() > > and access it with os.environ["x"] without a problem. However, when I pull > up the interpreter outside of Python and attempt to put anything other than > a string into os.environ, it will balk: > > import os >>>> import os >>>> os.environ["abc"] = {} > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > > File "C:\Python27\lib\os.py", line 420, in __setitem__ > putenv(key, item) > TypeError: must be string, not dict >>>> > > So it seems like App Engine does something to the putenv call where it > serializes model instances into strings first, and if that's the case must > also do a similar operation to os.getenv to deserialize them. What is App > Engine doing, if anything to the getenv/putenv calls?
Modifying os.environ in App Engine doesn't actually result in getenv/putenv calls. You can see the class used here: http://googleappengine.googlecode.com/svn/trunk/python/google/appengine/runtime/request_environment.py Please file a bug if the incompatibility between regular Python and App Engine os.environ is causing you problems: http://code.google.com/p/googleappengine/issues/list Cheers, Brian > > Thanks, > Richard > > On Tuesday, September 11, 2012 6:09:16 AM UTC-7, Guido van Rossum wrote: >> >> You'll probably get more help from StackOverflow.com. You'll need to >> provide more info, nobody can help you debug this with just that traceback >> information unless they're psychic. >> >> On Sunday, September 9, 2012 10:06:33 AM UTC-7, Richard Arrano wrote: >>> >>> Hello, >>> I've been using webtest to unit test my application and I've encountered >>> a strange issue. I wrap many of my get/post handlers in decorators and in >>> some of those decorators, I put ndb.Model instances in os.environ for later >>> use in the subsequent handler. This works on my local dev server and in >>> production. However, when I run nosetests it always gives me an error: >>> >>> os.environ["user"] = user >>> File "C:\Python27\lib\os.py", line 420, in __setitem__ >>> putenv(key, item) >>> TypeError: must be string, not User >>> >>> Any ideas on how to mitigate this so my tests won't error out at this >>> point? >>> >>> Thanks, >>> Richard > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/google-appengine/-/er6JJQK-EJoJ. > > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
