diff options
| author | Christopher Davis <loafier@gmail.com> | 2006-06-19 12:25:06 +0000 |
|---|---|---|
| committer | Christopher Davis <loafier@gmail.com> | 2006-06-19 12:25:06 +0000 |
| commit | bb48c914c6239ed1dbcb29eb62d33d3ab91e7215 (patch) | |
| tree | 0b6910959f96f683f3aa11a8e2f53572e42b3305 /README | |
| parent | efef73ae301947875602d67d0979a8ce3bd57dd0 (diff) | |
| download | irssi-python-bb48c914c6239ed1dbcb29eb62d33d3ab91e7215.tar.gz irssi-python-bb48c914c6239ed1dbcb29eb62d33d3ab91e7215.tar.xz irssi-python-bb48c914c6239ed1dbcb29eb62d33d3ab91e7215.zip | |
initial import
git-svn-id: http://svn.irssi.org/repos/irssi-python@4282 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'README')
| -rw-r--r-- | README | 62 |
1 files changed, 62 insertions, 0 deletions
@@ -0,0 +1,62 @@ +Pytest for Irssi + +This module embeds Python into an Irssi module. It provides just enough of an +interface to port the hello.pl example from the Perl docs to Python. There are +still a lot of things needed to be done, and some design issues to work out. +See the scripts/ directory for two small example scripts. + +To compile: + So far I've compiled it on Debian i386 and on FreeBSD i386. Haven't tried + elsewhere. The Makefile will need to be edited for it to be compiled. It + requires Python 2.4 installed. Put libpytest.so wherever Irssi recognizes + modules. + +In pytest so far: + -Looks for scripts in ~/.irssi/pyscripts + -Created base object wrappers for structs with type and chat_type members. + -Wrapped members of most of the core structs: + SERVER_REC + WI_ITEM_REC + CHANNEL_REC + QUERY_REC + -Wrapped print methods for the global module, server, and window item. + -Wrapped command methods for server and window item. + -Included a signal handler in the base server and window item types that + seems to prevent crashes when an object is accessed after a server is + disconnected or a window item is removed (channel close, etc). + -Python stdout and stderr are redirected to the Irssi status window. + -The command_bind method of the Script object binds commands. + +TODO: + -Wrap the rest of the *_REC structs. + -Wrap the important methods and functions. + -Signal handling + -Wrapper object factory + -Handle settings + -Handle timeouts + -Bunch of other stuff + +Design issues: + -Threading. Pytest doesn't consider thread usage by scripts at all. Any + thread usage would likely cause a crash, as pytest makes no attempt to + manipulate Python's interpreter lock or thread state. It would be easy to + use PyGILState_* critical sections around important parts where Irssi + calls into Python, but I don't know about the larger impact on Irssi for + allowing threads to run. With the signal system and timeouts, is this + really an important issue? + + -Structure. C modules could use some adjustment, especially as more code + is added. I also noticed how the Perl wrapper, like the rest of Irssi, + seems to be organized around interface type. The Python wrapper may need + some adjustment for this(?) + + -Also, command_bind currently isn't a function in the main namespace like in + the Perl wrapper. Instead, its a method of the Script object, which includes + a list of bound signals for record keeping. That way, the context is always + certain. Currently, the Script object is inserted into the user's script + through a startup hook function (irssi_main). There could be a better way + of doing this (perhaps by inserting the script object directly into the + script's globals and using an import hook to distribute it to modules the + script imports). + + |
