Limitations:
1. On this platform, the stack size is significantly less compared to other platforms and
hence deep recursions and high memory consuming operations may cause stack overflow.
2. Calling setsockopt() on UDP sockets requires that the application is signed with NETWORKCONTROL capability.
3. The file access time and modification time are same on Symbian and the same behavior is reflected in the utime module.
4. Support for touch enabled devices is limited. Touch events other than LSK and RSK are not handled.
Hence the UI handling in modules like graphics, glcanvas and appuifw will not function as expected on touch enabled devices.
Bugs:
1. Floating point formatting/parsing routines on this platform are imprecise and
as a result you can't round-trip floating point numbers reliably or rely on
floating point constants in Python source code to be precisely parsed into
their corresponding double values.
2. The strftime() API in the OpenC library returns output parameters with junk characters when the 'Z' format
specifier is used with the timezone as NULL and hence few test-cases for time and strptime modules fail.
3. The connect() API in the OpenC library raises EEXISTS instead of EISCONN, when it is called on an already connected
non-blocking TCP socket.
4. Problem with decimal separator when the phone's locale uses a decimal separator other than dot ('.')
5. time.clock() does not work as expected.
6. APIs in extension modules which use callbacks does not work if invoked from a thread.
7. sensor module is not supported on S60 3rd edition FP2 and 5th edition devices.
8. For applications packaged with s60ui profile, 'Exit' key does not work as expected when raw_input is pending.
9. The document of the extension modules are not fully in line with the new code base.
10. Importing modules under application's private directory fails.
A work around for this problem is packaging the modules to a directory under
\data\python and include this directory path into sys.path before
importing the modules. Ensymlbe's -extrasdir option can be used to place the modules under the required directory.
For example :
a)Place default.py in the directory "root\default.py"
b)Place dependent modules in "root\extras\data\python\
c)In default.py update the sys path
import sys
sys.path.append("c:\\data\\python")
d)ensymble py2sis root -extrasdir=extras
where "root" is the directory which contains default.py and "extras"
directory. "extras" directory contains the required modules under the
required directory tree.
Failing test cases:
Below is the summary of the standard regrtest Python module executed on this platform.
Table A.1:
Failing test cases
| Tests |
Comments |
| test_asynchat |
This test failed when tested on a 5th edition device and is under investigation. It works fine on 3rd edition and 3rd edition FP2 devices. |
| test_builtin |
test_cmp fails because of Stack Overflow |
| test_compiler |
testCompileLibrary, testLineNo fail because of Stack Overflow. Another reason for this fail is related to the zipping of all the standard Python files. |
| test_copy |
test_deepcopy_reflexive_dict, test_deepcopy_reflexive_list and test_deepcopy_reflexive_tuple fail because of Stack overflow |
| test_doctest |
Python bug (http://bugs.python.org/issue1540) |
| test_exceptions |
testInfiniteRecursions fail because of Stack Overflow |
| test_format |
This test crashes and this is related to bug # 1, as mentioned above. |
| test_logging |
This test hanged when tested on a 5th edition device and is under investigation. It works fine on 3rd edition and 3rd edition FP2 devices. |
| test_mailbox |
test_pack, test_set_item, test_update in TestMH and test_clean in TestMaildir fail. One of the reasons for these failures is the limitation # 3, as mentioned above. Further investigation is in progress. |
| test_marshal |
This fail relates to bug # 1, as mentioned above. |
| test_normalization |
testURLread fails and this relates to bug # 3, as mentioned above. |
| test_richcmp |
This fail is because of Stack overflow |
| test_socket |
testConnect fails and this relates to bug # 3, as mentioned above. |
| test_strptime |
This fail relates to bug # 2, as mentioned above. |
| test_time |
This fail relates to bug # 2, as mentioned above. |
| test_zipfile |
One of the reasons for this fail is related to the zipping of all the standard Python files and is under investigation. |
| test_importhooks |
This fails because distutils module not supported. |
| test_pyclbr |
This fail is related to the zipping of all the standard Python files. |
| test_repr |
This fail is related to the zipping of all the standard Python files. |
| test_urllib2 |
This fail is related to the zipping of all the standard Python files. |
|
Skipped test cases:
These tests are skipped as one or more modules needed by them are not supported on this platform.
Table A.2:
Skipped test cases
| test_aepack |
test_al |
test_applesingle |
test_audioop |
test_bsddb |
test_bsddb185 |
test_bsddb3 |
| test_bz2 |
test_cd |
test_cl |
test_cmd_line |
test_commands |
test_crypt |
test_ctypes |
| test_curses |
test_dbm |
test_distutils |
test_dl |
test_fork1 |
test_gdbm |
test_gl |
| test_grp |
test_hotshot |
test_imageop |
test_imgfile |
test_ioctl |
test_largefile |
test_linuxaudiodev |
| test_macfs |
test_macostools |
test_macpath |
test_mhlib |
test_mmap |
test_nis |
test_openpty |
| test_ossaudiodev |
test_pep277 |
test_plistlib |
test_poll |
test_popen |
test_popen2 |
test_pty |
| test_pwd |
test_resource |
test_rgbimg |
test_scriptpackages |
test_signal |
test_sqlite |
test_startfile |
| test_subprocess |
test_sunaudiodev |
test_sundry |
test_tcl |
test_threadsignals |
test_wait3 |
test_wait4 |
| test_winreg |
test_winsound |
test_zipfile64 |
|
|
|
|
|
These tests are also skipped, but are related to the zipping of all the standard Python files.
Table A.3:
Skipped test cases related to zipping of standard Python files
| test_email |
test_email_codecs |
test_email_renamed |
test_import |
|
Release 1.9.1 final , documentation updated on 24 Jan 2009.
See About this document... for information on suggesting changes.