On Tue, 9 Jan 2018 at 02:42 Nick Coghlan <ncogh...@gmail.com> wrote: > On 9 January 2018 at 20:01, Antoine Pitrou <solip...@pitrou.net> wrote: > > On Mon, 08 Jan 2018 09:11:38 +0000 > > Pablo Galindo Salgado <pablog...@gmail.com> wrote: > >> Hi, > >> > >> I'm currently working on exposing posix_spawn in the posix module (and > by > >> extension in the os module). You can find the initial implementation in > >> this PR: > >> > >> https://github.com/python/cpython/pull/5109 > >> > >> As pointed out by Gregory P. Smith, some changes are needed in the way > the > >> file_actions arguments is passed from Python. For context, posix_spawn > has > >> the following declaration: > >> > >> int posix_spawn(pid_t *pid, const char *path, > >> const posix_spawn_file_actions_t *file_actions, > >> const posix_spawnattr_t *attrp, > >> char *const argv[], char *const envp[]); > >> > >> Here, file_actions is an object that represents a list of file actions > >> (open, close or dup2) that is populated using helper functions on the C > API. > >> > >> The question is: what is the best way to deal with this argument? > > > > How about a list of tuples like: > > [(os.SPAWN_OPEN, 4, 'README.txt', os.O_RDONLY, 0), > > (os.SPAWN_CLOSE, 5), > > (os.SPAWN_DUP2, 3, 6), > > ] > > > > I don't expect this API to be invoked directly by user code so it > > doesn't have to be extremely pretty. > > I'll note that one advantage of this approach is that it ties in well > with how the C API is going to have to deal with it anyway: a switch > statement dispatching on the first value, and then passing the > remaining arguments to the corresponding posix_file_actions API. >
Plus the posix module tends to stick reasonably close to the C API anyway since it's such a thin wrapper. > > Wrapping it all up in a more Pythonic self-validating API would then > be the responsibility of the subprocess module (in the standard > library), or third party modules. > +1 from me on Antoine's suggestion. Might as well keep it simple.
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com