using "request" variable in python web program

2007-10-20 Thread sami
Hi

I am trying to write a facebook application in python - I have been
programming simple desktop applications till now and am not really
familiar with web apps

Pyfacebook is the wrapper for the REST based Facebook API - there is a
simple example for its usage as shown below:

def simple_web_app(request, api_key, secret_key):
fb = Facebook(api_key, secret_key, request.GET['auth_token'])
fb.auth_getSession()

A Django-based tutorial and source is available here:
http://wiki.developers.facebook.com/index.php/PythonPyFacebookTutorial

I really don't want to use a framework for the time being and just
want an app up and running

My question is - how do you create the "request" object which will be
passed into the simple_web_app(request, api_key, secret_key) function
here - is there somewhere I can read into it?

I have been googling for hours and there seems to be no simple,
straightforward example for this - PHP rules when it comes to simple
web programming apps - either I am not looking at the right places but
it's very hard to get up and running quickly for web apps in Python -
maybe DiveIntoPython needs a section devoted for web programming

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: using "request" variable in python web program

2007-10-21 Thread sami
> However, it shouldn't be too bad to set Django up, really, especially
> if people have taken some time to explain something very close to what
> you want to do using Django. Moreover, there's a Google group (django-
> users) where you could ask general questions, and I imagine that
> people will be quite happy to help you out. But I can totally
> understand that creating databases and installing various packages
> seems somewhat peripheral to a task which could arguably be done using
> a CGI script (as far as I can see).
>
Thanks a ton Paul for the information. I am using CGI and my host
(nearlyfreespeech.net) does not have django hosting - and being mainly
a C/dekstop apps programmer I really don't want to learn the whole MVC
concept and its implementation (and quirks) in django - I want to use
abstractions only when I feel the need for them

Since a django user made pyfacebook, hopefully someone on the forum
will help out

Thanks again

Sami

> Paul
>
> P.S. I'm not too impressed by the lack of a common high-level Web API
> for Python, either. However, I've mostly ignored the discussions and
> stuck with my own API (WebStack) in the knowledge that if it doesn't
> work for me, at least I know how I might fix it.


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: using "request" variable in python web program

2007-10-22 Thread sami
> See the library reference for information on how to get the value of
> form/request parameters from the CGI environment:
>
> http://docs.python.org/lib/node561.html
>
> Paul

Thanks again Paul - now I can see that the "request" object is a
string of name/value pairs that occurs after a "?" in a url e.g.
url.com/index.cgi?name=sami&lang=python - is that correct? Googling
for this information is useless since the word "request" is so common
on the www

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: using "request" variable in python web program

2007-10-22 Thread sami
> Not exactly - this is the "query string" part of the URI.
> Request and Response are the two messages defined by the HTTP protocol.
> When you type a URL or click on a link or press a button in a page, your
> browser builds the appropiate Request message and sends it to the server.
> After processing, the server emits the Response message, and the browser
> displays it or otherwise processes the response.
>
> --
> Gabriel Genellina

Thanks Paul and Gabriel - I am confused I guess - I do know about the
request/response mechanism, I wrote this app a while ago:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/522983 - I
wrote this app before in C and decoded request/response params using a
sniffer - I ported it to Python since I wanted to learn Python

> The string after "?" in a URL is actually the "query string" and is
> typically exposed as the QUERY_STRING environment variable in CGI. See
> here for more specific details:

This is what is mixing me up - an example given in the source for
Pyfacebook - http://pyfacebook.googlecode.com/svn/trunk/examples/examples.py

def simple_web_app(request, api_key, secret_key):
fb = Facebook(api_key, secret_key, request.GET['auth_token'])
fb.auth.getSession()

It seemed to me "request" was a key in a key/value pair string/
dictionary

Anyway, I have the "auth_token" now and I can pass these 3 string
values to as Facebook(, , ) - and
it's moving along - but I am persevering :) no PHP for me - I hope I
can put up a tut for this afterwards

Thanks again for the help, guys

-- 
http://mail.python.org/mailman/listinfo/python-list


Problems trying to hook own exception function to sys.excepthook

2008-04-06 Thread Sami
Hello,

I am new to Python.

I tried to hook my own ExceptionPrintingFunction sys.excepthook but it 
does not work.

This is what I wrote:
---
import sys

def MyOwnExceptHook(typ, val, tb):
print "Inside my own hook"

sys.excepthook = MyOwnExceptHook

x = 1/0
---
This is what I get
---
Traceback (most recent call last):
   File 
"E:/Home/Programming/Python/TryProjects/ExceptHandling1/Except5.py", 
line 8, in 
 x = 1/0
ZeroDivisionError: integer division or modulo by zero
---

I never see "Inside my own hook" which tells me that the hook is not 
being called. What I really want to test is to stop the exception from 
propagating further and leave the program intact.

What am I doing wrong? Please let me know if there are any other newbie 
groups that I should probably try in stead.

Thanks

Sami
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Problems trying to hook own exception function to sys.excepthook

2008-04-06 Thread Sami
Peter Otten wrote:
> Sami wrote:
> 
>> Hello,
>>
>> I am new to Python.
>>
>> I tried to hook my own ExceptionPrintingFunction sys.excepthook but it
>> does not work.
>>
>> This is what I wrote:
>> ---
>> import sys
>>
>> def MyOwnExceptHook(typ, val, tb):
>> print "Inside my own hook"
>>
>> sys.excepthook = MyOwnExceptHook
>>
>> x = 1/0
>> ---
>> This is what I get
>> ---
>> Traceback (most recent call last):
>>File
>> "E:/Home/Programming/Python/TryProjects/ExceptHandling1/Except5.py",
>> line 8, in 
>>  x = 1/0
>> ZeroDivisionError: integer division or modulo by zero
>> ---
>>
>> I never see "Inside my own hook" which tells me that the hook is not
>> being called. What I really want to test is to stop the exception from
>> propagating further and leave the program intact.
>>
>> What am I doing wrong? Please let me know if there are any other newbie
>> groups that I should probably try in stead.
> 
> Are you running your code from within idle? It wraps your script in
> something like
> 
> try:
># run script
> except:
># show traceback
> 
> (Have a look at InteractiveInterpreter.runcode() in code.py if you are
> interested in the actual code) 
> 
> So your except hook never gets to see the exception and therefore won't be
> invoked. Run your script from the commandline and you will see the
> behaviour you expected.
> 
> Peter
> 

Great!! Thank you. I have been trying since yesterday to get to the 
bottom of this.

Does this mean that one should always use the command line to run a 
python program?

Sami
-- 
http://mail.python.org/mailman/listinfo/python-list


traceback.print_exc() supposed to stop exception propagation.

2008-04-06 Thread Sami
Hello,

In the Python book that I am using to learn the language it says that 
the traceback.print_exc() can be used to stop exception propagation and 
make the program keep running.

Here is a simple piece of code that I typed in to test this fact:
---
import sys

def Myexcepthook(etype, value, tb):
 print "in Myexcepthook\n"
 import traceback
 lines=traceback.format_exception(etype, value, tb)
 print "\n".join(lines)
 traceback.print_exc()


sys.excepthook = Myexcepthook

x = 1/0

x = 78

print x
--
The Output:
--
in Myexcepthook

Traceback (most recent call last):

   File 
"E:\Home\Programming\Python\TryProjects\ExceptHandling1\Except2.py", lin
  15, in 
 x = 1/0

ZeroDivisionError: integer division or modulo by zero

None
--

I never see the value 78.

What am I doing wrong?

Thanks,
Sami
-- 
http://mail.python.org/mailman/listinfo/python-list


RE: Python 3.3 shuts down

2014-06-04 Thread Ramas Sami
Hi all,
Python 3.3  IDLE opens perfectly from that If I am try to open 
any-python-file.py or New file the python IDLE closes automatically.
Python Version 3.3OS Windows 7
This problem happened when I had installed py2exe to convert into Python 
executables, since I have tried other packages like cx_freeze, PyInstaller with 
that I wasn't successful.
Please provide me a solution, thanks

Best Regards
--Ramas
  -- 
https://mail.python.org/mailman/listinfo/python-list


RE: Compiling Error prompt

2014-06-20 Thread Ramas Sami
Hi all,
when ever I execute the code always on the output prompts this error
 "C:\Python33\lib\importlib\_bootstrap.py:1532: UserWarning: Module six was 
already imported from C:\Python33\lib\site-packages\six.py, but 
c:\python33\lib\site-packages\six-1.6.1-py3.3.egg is being added to sys.path  
loader.load_module(name)"
How to fix this error
Thanks in advance...

Best Regards,Ramas.
  -- 
https://mail.python.org/mailman/listinfo/python-list


Getting error message/trace over the C API

2007-10-16 Thread Sami Vaisanen
Hello group,
 
I'm writing a C++ based application that embeds the python engine. Now I
have a problem regarding exception/error information. Is there a way to
get the exception message and possibly the traceback into a string for
example? I've been eyeballing the PyErr_ module and it seems fairly
limited. In other words PyErr_Print() calls the right functions for
getting the exception information but unfortunately it is hardwired to
print this data directly into sys.stderr, and for an embedded application
this is completely inappropriate. 
 
I have seen solutions that propose writing a custom Python class with
write method and using that to grab the output from sys.stderr and then
saving the data for example into a variable for later access, but unless
Im mistaken this solution (not only that it is extremely ugly) is not
thread safe. Even if a thread in my application is holding GIL, the lock
can be released by extensions/the interpreter and thus opens up a race
condition regarding that grabber object. 
 
Please advice how to do this.

-sami
-- 
http://mail.python.org/mailman/listinfo/python-list


traceback over C API and PyObject_CallObject

2007-10-19 Thread Sami Vaisanen
Hello group,

I'm trying to get the Python exception information (message and traceback)
stored into a string in my C++ code. However all i get back is the string
"None". All the checks pass and all pointers get a value from the python
API calls. I've also tried with a different function such as
PyObject_CallFunctionObjArgs but the result is the same.

Thanks

void get_python_exception(string& message, string& traceback)
{
GIL g;
 
PyObject* type  = NULL;
PyObject* value = NULL;
PyObject* trace = NULL;
 
PyErr_Fetch(&type, &value, &trace);
 
py_ref ref_type(type);
py_ref ref_value(value);
py_ref ref_trace(trace);
 
py_ref name(PyString_FromString("traceback"));
py_ref module(PyImport_Import(name.get()));
if (module)
{
py_ref fun(PyObject_GetAttrString(module.get(), "format_exc"));
if (fun)
{
PyErr_Restore(type, value, trace);
ref_type.release();
ref_value.release();
ref_trace.release();
 
py_ref ret(PyObject_CallObject(fun.get(), NULL));
if (ret && PyString_Check(ret.get()))
{
char* str = PyString_AsString(ret.get());
message = str;
traceback = "traceback not available";
return;
}
}
}
message   = "message not available";
traceback = "traceback not available";
}


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Getting error message/trace over the C API

2007-10-18 Thread Sami Vaisanen
On Tue, 16 Oct 2007 18:55:22 +, Duncan Booth wrote:

> Sami Vaisanen <[EMAIL PROTECTED]> wrote:
> 
>> Hello group,
>>  
>> I'm writing a C++ based application that embeds the python engine. Now I
>> have a problem regarding exception/error information. Is there a way to
>> get the exception message and possibly the traceback into a string for
>> example? I've been eyeballing the PyErr_ module and it seems fairly
>> limited. In other words PyErr_Print() calls the right functions for
>> getting the exception information but unfortunately it is hardwired to
>> print this data directly into sys.stderr, and for an embedded application
>> this is completely inappropriate. 
>>  
>>  
>> Please advice how to do this.
>> 
> All you have to do is call whatever functions you would call from Python. 
> e.g. from C you need to import traceback, then call getattr to get the 
> appropriate function (e.g. format_exc or format_exception), then just call 
> it.



void get_python_exception(string& message, string& traceback)
{
GIL g;
 
PyObject* type  = NULL;
PyObject* value = NULL;
PyObject* trace = NULL;
 
PyErr_Fetch(&type, &value, &trace);
 
py_ref ref_type(type);
py_ref ref_value(value);
py_ref ref_trace(trace);
 
py_ref name(PyString_FromString("traceback"));
py_ref module(PyImport_Import(name.get()));
if (module)
{
py_ref fun(PyObject_GetAttrString(module.get(), "format_exc"));
if (fun)
{
PyErr_Restore(type, value, trace);
ref_type.release();
ref_value.release();
ref_trace.release();
 
py_ref ret(PyObject_CallObject(fun.get(), NULL));
if (ret && PyString_Check(ret.get()))
{
char* str = PyString_AsString(ret.get());
message = str;
traceback = "traceback not available";
return;
}
}
}
message   = "message not available";
traceback = "traceback not available";
}

str evaluates to "None", any ideas what gives here? I've also tried to
call the traceback with a different function, such as
PyObject_CallFunctionObjArgs but the result is still same.

Thanks





-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Extending Python with C API

2007-10-18 Thread Sami Vaisanen
On Thu, 13 Sep 2007 21:26:33 -0400, Carsten Haese wrote:

> On Thu, 2007-09-13 at 18:05 -0700, Thierry Masson wrote:
>> Hello,
>> 
>> I'm trying to use the C API to extend Python. I've looked at various
>> books and web sites (including the docs at python.org) and I can't get
>> any of the samples to work. Below is a very minimalist example that
>> I'm trying to get working and I was wondering if someone could tell me
>> where I'm going wrong. It's probably something very obvious to those
>> familiar with this technique. 
>>[snip...]
>> The setup script builds the library OK, and I've verified that
>> gtestmodule.so is getting created. But when I try to run a test script
>> ( test.py, above) that uses the library, I get this error:
>> 
>> Traceback (most recent call last):
>>   File "test.py", line 2, in ?
>> import gtestmodule
>> ImportError: ./gtestmodule.so: undefined symbol: PyBuildValue 
> 
> Your module C code uses an unknown function by the name of PyBuildValue.
> The actual name of the function you mean is Py_BuildValue.
> 
> HTH,



void get_python_exception(string& message, string& traceback)
{
GIL g;
 
PyObject* type  = NULL;
PyObject* value = NULL;
PyObject* trace = NULL;
 
PyErr_Fetch(&type, &value, &trace);
 
py_ref ref_type(type);
py_ref ref_value(value);
py_ref ref_trace(trace);
 
py_ref name(PyString_FromString("traceback"));
py_ref module(PyImport_Import(name.get()));
if (module)
{
py_ref fun(PyObject_GetAttrString(module.get(), "format_exc"));
if (fun)
{
PyErr_Restore(type, value, trace);
ref_type.release();
ref_value.release();
ref_trace.release();
 
py_ref ret(PyObject_CallObject(fun.get(), NULL));
if (ret && PyString_Check(ret.get()))
{
char* str = PyString_AsString(ret.get());
message = str;
traceback = "traceback not available";
return;
}
}
}
message   = "message not available";
traceback = "traceback not available";
}

str evaluates to "None", any ideas what gives here? I've also tried to
call the traceback with a different function, such as
PyObject_CallFunctionObjArgs but the result is still same.

Thanks



-- 
http://mail.python.org/mailman/listinfo/python-list


traceback over C API - still not working...

2007-10-20 Thread Sami Vaisanen
This is becoming utterly painful process I found out that the return
value from "format_exception" function is NOT a list, i.e. PyList_Check()
fails. PySequence_Check() succeeds but then PySequence_List() gives me
back -1. So wtf?

I must say the API is crap on this part. Im trying to get error
information regarding previous error and if all i get back is another
error indicator, then what am I supposed to do? Recursive error handling?
Sounds like da bomb!

The API should have two levels of error handling. First level should
expose a conventional error code mechanism for checking for bad params
etc. Only if the error code says that there was a python error during
evaluation/compilation should one need to use this mechanism. 

Just my two cents.

Thanks for help.



void get_python_error_info(string& info)
{
GIL g;

PyObject* type  = NULL;
PyObject* value = NULL;
PyObject* trace = NULL;
PyErr_Fetch(&type, &value, &trace);

py_ref ref_type(type);
py_ref ref_value(value);
py_ref ref_trace(trace);

py_ref name(PyString_FromString("traceback"));
py_ref module(PyImport_Import(name.get()));
if (!module)
{
PyErr_Clear();
return;
}
PyObject* list = NULL;
if (trace)
{
py_ref fun(PyObject_GetAttrString(module.get(), "format_exception"));
if (fun)
list = PyObject_CallFunctionObjArgs(type, value, trace, NULL);
PyErr_Clear();
}
else
{
py_ref fun(PyObject_GetAttrString(module.get(), 
"format_exception_only"));
if (fun)
list = PyObject_CallFunctionObjArgs(type, value, NULL);
PyErr_Clear();
}
if (list && PySequence_Check(list))
{
Py_ssize_t len = PySequence_Size(list);
  
for (Py_ssize_t i=0; i Hello group,
>
> I'm trying to get the Python exception information (message and  
> traceback)
> stored into a string in my C++ code. However all i get back is the string
> "None".

This is what you get (actually "None\n") when there is no error set.

> All the checks pass and all pointers get a value from the python
> API calls. I've also tried with a different function such as
> PyObject_CallFunctionObjArgs but the result is the same.

Since you already know the three components (type, value, trace), I'd use  
traceback.format_exception instead (and remove the PyErr_Restore call -  
I'm unsure if it works the way you expect it).
In this case you have to pass three arguments, so yes, use  
PyObject_CallFunctionObjArgs (remember the final NULL). Beware:  
format_exception returns a formatted list, not a string. You have to  
concatenate all the elements (either using ''.join or repeteadly calling  
PyString_Concat)

> void get_python_exception(string& message, string& traceback)
> {
> GIL g;
>PyObject* type  = NULL;
> PyObject* value = NULL;
> PyObject* trace = NULL;
>PyErr_Fetch(&type, &value, &trace);
>py_ref ref_type(type);
> py_ref ref_value(value);
> py_ref ref_trace(trace);
>py_ref name(PyString_FromString("traceback"));
> py_ref module(PyImport_Import(name.get()));
> if (module)
> {
> py_ref fun(PyObject_GetAttrString(module.get(), "format_exc"));
> if (fun)
> {
> PyErr_Restore(type, value, trace);
> ref_type.release();
> ref_value.release();
> ref_trace.release();
>py_ref ret(PyObject_CallObject(fun.get(), NULL));
> if (ret && PyString_Check(ret.get()))
> {
> char* str = PyString_AsString(ret.get());
> message = str;
> traceback = "traceback not available";
> return;
> }
> }
> }
> message   = "message not available";
> traceback = "traceback not available";
> }




-- 
Gabriel Genellina

-- 
http://mail.python.org/mailman/listinfo/python-list