From e3426779df0301ece91b851bba58704e52be2176 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Thu, 23 Mar 2006 01:55:14 +0000 Subject: corrected Python object propagation (attribute "py") and adjusted help files small fix enable module packages (module/__init__.py[co]), now also for Max enable compiled-only scripts (without .py) svn path=/trunk/; revision=4751 --- externals/grill/py/pd/builtins-1.pd | 14 +++++++------- externals/grill/py/pd/methods-1.pd | 22 +++++++++++----------- externals/grill/py/pd/methods-2.pd | 24 ++++++++++++------------ externals/grill/py/source/pybase.cpp | 16 ++++++++-------- 4 files changed, 38 insertions(+), 38 deletions(-) (limited to 'externals') diff --git a/externals/grill/py/pd/builtins-1.pd b/externals/grill/py/pd/builtins-1.pd index b5eb4eef..23088d9f 100644 --- a/externals/grill/py/pd/builtins-1.pd +++ b/externals/grill/py/pd/builtins-1.pd @@ -1,10 +1,9 @@ -#N canvas 602 394 710 425 12; +#N canvas 602 394 714 429 12; #X obj 36 241 py .range @py 1; #X floatatom 35 356 5 0 0 0 - - -; #X obj 35 323 py .sum; #X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818 -1 0; -#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill; #X text 235 32 http://grrrr.org/ext; #X obj 36 159 nbx 5 14 -1e+037 1e+037 0 1 empty empty min 0 -6 0 10 -262131 -1 -1 51 256; @@ -39,15 +38,16 @@ #X connect 10 0 6 0; #X connect 11 0 5 0; #X restore 36 190 pd pak3; -#X text 115 240 construct a Python list; +#X text 169 239 construct a Python list; #X text 78 282 Python object pointer is propagated to next object; #X text 106 320 calculate sum over list elements; #X text 21 73 Py can use built-in Python functions; #X text 21 97 A . preceding the function name searches for the function in either the pyext module or in __builtins__; +#X text 235 16 Python script objects \, (C)2003-2006 Thomas Grill; #X connect 0 0 2 1; #X connect 2 0 1 0; -#X connect 6 0 9 0; -#X connect 7 0 9 1; -#X connect 8 0 9 2; -#X connect 9 0 0 1; +#X connect 5 0 8 0; +#X connect 6 0 8 1; +#X connect 7 0 8 2; +#X connect 8 0 0 1; diff --git a/externals/grill/py/pd/methods-1.pd b/externals/grill/py/pd/methods-1.pd index ab6b9842..5b85c43a 100644 --- a/externals/grill/py/pd/methods-1.pd +++ b/externals/grill/py/pd/methods-1.pd @@ -1,24 +1,24 @@ -#N canvas 540 469 722 357 12; +#N canvas 540 469 734 369 12; #X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818 -1 0; -#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill; #X text 235 32 http://grrrr.org/ext; #X symbolatom 21 139 10 0 0 0 - - -; #X symbolatom 25 298 10 0 0 0 - - -; #X obj 22 179 py .str @py 1; -#X text 93 167 convert the symbol to a Python string; +#X text 145 170 convert the symbol to a Python string; #X text 35 216 pass it as a true Python object; #X symbolatom 364 295 10 0 0 0 - - -; #X text 462 269 use module function; #X text 23 119 enter some text; -#X text 21 73 Py can act on Python objects in a object-oriented manner -; -#X text 93 184 using the built-in str function; +#X text 145 187 using the built-in str function; #X obj 25 252 pym swapcase; #X text 63 270 use swapcase method; #X obj 363 250 py string.swapcase; -#X connect 3 0 5 1; -#X connect 5 0 13 1; -#X connect 5 0 15 1; -#X connect 13 0 4 0; -#X connect 15 0 8 0; +#X text 235 16 Python script objects \, (C)2003-2006 Thomas Grill; +#X text 21 73 Py can act on Python objects in an object-oriented manner +; +#X connect 2 0 4 1; +#X connect 4 0 11 1; +#X connect 4 0 13 1; +#X connect 11 0 3 0; +#X connect 13 0 7 0; diff --git a/externals/grill/py/pd/methods-2.pd b/externals/grill/py/pd/methods-2.pd index 0d0dd685..df967716 100644 --- a/externals/grill/py/pd/methods-2.pd +++ b/externals/grill/py/pd/methods-2.pd @@ -1,20 +1,17 @@ -#N canvas 540 469 738 343 12; +#N canvas 540 469 746 351 12; #X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818 -1 0; -#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill; #X text 235 32 http://grrrr.org/ext; #X symbolatom 21 139 10 0 0 0 - #0-t -; #X text 23 119 enter some text; -#X text 21 73 Py can act on Python objects in a object-oriented manner -; #X obj 25 252 pym 2 *; #X obj 213 183 t b f; #X text 105 251 repeat text; #X text 215 117 multiply it!; #X symbolatom 25 283 80 0 0 0 - - -; #X obj 214 139 nbx 5 14 1 100 0 1 empty empty empty 0 -6 0 10 -262131 --1 -1 16 256; -#N canvas 0 0 458 308 init 0; +-1 -1 6 256; +#N canvas 0 0 462 312 init 0; #X obj 61 116 s \$0-t; #X obj 64 44 loadbang; #X obj 64 81 symbol a; @@ -22,9 +19,12 @@ #X connect 2 0 0 0; #X restore 606 127 pd init; #X obj 213 159 int; -#X connect 3 0 6 1; -#X connect 6 0 10 0; -#X connect 7 0 6 0; -#X connect 7 1 6 2; -#X connect 11 0 13 0; -#X connect 13 0 7 0; +#X text 235 16 Python script objects \, (C)2003-2006 Thomas Grill; +#X text 21 73 Py can act on Python objects in an object-oriented manner +; +#X connect 2 0 4 1; +#X connect 4 0 8 0; +#X connect 5 0 4 0; +#X connect 5 1 4 2; +#X connect 9 0 11 0; +#X connect 11 0 5 0; diff --git a/externals/grill/py/source/pybase.cpp b/externals/grill/py/source/pybase.cpp index f4762fbf..c0f2bc44 100644 --- a/externals/grill/py/source/pybase.cpp +++ b/externals/grill/py/source/pybase.cpp @@ -454,6 +454,7 @@ static bool getmodulesub(const char *mod,char *dir,int len,char *ext) // if dir is current working directory... name points to dir if(dir == name) strcpy(dir,"."); + return name != NULL; #elif FLEXT_SYS == FLEXT_SYS_MAX short path; long type; @@ -570,16 +571,15 @@ bool pybase::ReloadModule() if(module) newmod = PyImport_ReloadModule(module); else { - // search in module path + // search in module path (TODO: check before if module is already present to avoid costly searching) char dir[1024]; - if(getmodulepath(modname.c_str(),dir,sizeof(dir))) { - AddToPath(dir); - newmod = PyImport_ImportModule((char *)modname.c_str()); - } - else { + if(!getmodulepath(modname.c_str(),dir,sizeof(dir))) PyErr_SetString(PyExc_ImportError,"Module not found in path"); - newmod = NULL; - } + else + AddToPath(dir); + + // module could also be loaded ok, even if it's not in the path (e.g. for internal stuff) + newmod = PyImport_ImportModule((char *)modname.c_str()); } } else { -- cgit v1.2.1