Hi there, I'm pleased to announce a new project of mine, named ipplib, which offers IPP requests parsing and/or building, and (basic) support for the CUPS' API.
This project is written in 100% Python, and is available under the terms of the GNU GPL. It's very young, although the parsing code is two years old and I believe well tested, so it's currently only downloadable from subversion for now : $ cd /tmp $ svn co svn://svn.librelogiciel.com/ipplib/trunk ipplib $ cd ipplib $ python setup.py install (for the last line to work, you need the python-dev package installed). Examples of use in Python programs : --- CUT --- # Parsing.py EXAMPLE from ipplib import ipplib # Read IPP datas from a CUPS control file myfile = open("/var/spool/cups/c00155") ippdatas = myfile.read() myfile.close() # Parse these datas request = ipplib.IPPRequest(ippdatas) request.parse() print request --- CUT --- --- CUT --- # Building.py EXAMPLE from ipplib import ipplib request = ipplib.IPPRequest(operation_id=ipplib.CUPS_GET_DEFAULT) request.operation["attributes-charset"] = ("charset", "utf-8") request.operation["attributes-natural-language"] = ("naturalLanguage", "en-us") ippdatas = request.dump() newrequest = ipplib.IPPRequest(ippdatas) newrequest.parse() print newrequest.operation["attributes-natural-language"] --- CUT --- --- CUT --- # CUPS' API from ipplib import ipplib cups = ipplib.CUPS() # High level API : retrieve info about job 3 : answer = cups.getJobAttributes(3) print answer.job["document-format"] # Lower level API : request = cups.newRequest(ipplib.IPP_GET_PRINTER_ATTRIBUTES) request.operation["printer-uri"] = ("uri", cups.identifierToURI("printers", "HP2100")) for attribute in ("printer-uri-supported", "printer-type", "member-uris") : request.operation["requested-attributes"] = ("nameWithoutLanguage", attribute) answer = request.doRequest() print answer --- CUT --- Of course several parameters can be used to customize things a bit if the default values (e.g. http://localhost:631 for server) are not what you want. The long term goal is to implement most of the CUPS' API, but currently only getDefault() and getJobAttributes(jobid) are fully implemented... Currently the documentation is inexistant, and the docstrings in the source suck, but this will be improved in the near future. Any comment is more than welcome. Any help is more than welcome. bye Jerome Alet -- http://mail.python.org/mailman/listinfo/python-list