New submission from Devyn Johnson: When creating Python modules via th C-API, it would be wonderful if there were an easier and more efficient way of creating an "__all__" for the module. In my opinion, an API function should be made; i.e., something like PyALL("FUNC1", "FUNC2", ...)
Currently, I use something like the below code. """ PyObject *create_all(void); PyObject *create_all(void) { // Create __all__ #define _ALLSTRING "[ssssss" #define _ENDSTRING "]" return Py_BuildValue( _ALLSTRING #if defined(ENV64BIT) && (defined(__x86_64__) || defined(__x86_64)) "sss" #ifdef __BMI2__ "ssss" #endif #endif _ENDSTRING, // STRING CONVERSIONS "lowercasestr", "uppercasestr", // FIND AND REPLACE/REMOVE "strreplace", "strreplace_once", "rmgravequote", // ASSEMBLY-RELATED COMMANDS #if defined(ENV64BIT) && (defined(__x86_64__) || defined(__x86_64)) "rdtsc", "get_vendor_id", "get_cpu_stepping", #ifdef __BMI2__ "is_fpu_aval", "is_avx_aval", "is_fma_aval", "is_aes_aval", #endif #endif "nop" ); } // Some code excluded MODINIT { // Initialize module PyObject *m; m = PyModule_Create(&module); PyModule_AddObject(m, "__all__", create_all()); PyModule_AddStringConstant(m, "__author__", __author__); PyModule_AddStringConstant(m, "__version__", __version__); if (m == NULL) return NULL; return m; } """ ---------- components: Interpreter Core messages: 258804 nosy: Devyn Johnson priority: normal severity: normal status: open title: Python C-API: __all__ Creator type: enhancement versions: Python 3.6 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue26178> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com