[Python-Dev] Modules of plat-* directories (original) (raw)

Victor Stinner victor.stinner at haypocalc.com
Mon Oct 17 01:16:36 CEST 2011


Hi,

I don't understand why we kept modules of the plat-* directories (e.g. Lib/plat-linux/CDROM.py). It looks like these modules are not used, except maybe some DL constants used by PyKDE4. Can't we move used constants to classic Python modules (e.g. the os module) and drop unused modules?

These modules are not regenerated when Python is compiled, so I don't understand how values can be correct. For example, IN.INT_MAX is 2147483647, whereas it should be 9223372036854775807 on my 64-bit Linux. These values don't look reliable.

I'm looking at these modules because Arfrever asked me to review a patch for h2py.py, a script to regenerate these modules: http://bugs.python.org/issue13032

He also suggested somewhere to regenerate these modules when Python is built.

--

Python has builtin modules generated from C header files:

CDROM/CDIO can be used to control the low-level CDROM API. CDROM is used by the cdsuite project: http://offog.org/code/cdsuite.html

DLFCN is used by PyKDE4: sys.setdlopenflags(DLFCN.RTLD_NOW|DLFCN.RTLD_GLOBAL). I didn't know this sys function :-)

(OS/2 platform is deprecated, see PEP 11.)

The IN module is used by policykit to get INT_MAX (used to compute "MAX_DBUS_TIMEOUT = INT_MAX / 1000.0"). It was also used in SGI video demos of Python 1.4.

STROPTS is not used.

TYPES is used by other plat-* modules (IN, DLFCN, STROPTS).

These modules contain non-working functions:

def __STRING(x): return #x
def __constant_le32_to_cpu(x): return ((__u32)(__le32)(x))

__STRING(x) returns None, "#x" is a comment in Python (in C, the preprocessor converts x to a string). Call __constant_le32_to_cpu() fails because __le32 is not defined. Even if __le32 was defined, the code doesn't look to be valid.

Victor



More information about the Python-Dev mailing list