pybind/pybind11

Feature Request: Cancelling a Nurse/Patient Relationship for keep_alive

Open

#1.708 aberto em 22 de fev. de 2019

Ver no GitHub
 (1 comment) (1 reaction) (0 assignees)C++ (2.005 forks)batch import
enhancementhelp wanted

Métricas do repositório

Stars
 (14.677 stars)
Métricas de merge de PR
 (Mesclagem média 5d 2h) (10 fundiu PRs em 30d)

Description

I would like to request a feature be made that cancels the keep_alive<nurse, patient> relationship. I have found a use case for callbacks which require a way to cancel the keep_alive functionality upon a python function call bound with pybind11 (unregister_callback). Please see example below:

Example:

.def("register_callback", &registerCallback, py::keep_alive<1, 2>())
.def("unregister_callback", &unregisterCallback);

class CallBack():
    ....

def func(connection):
    callback = CallBack()
    connection.regsiter_callback(callback)
    # do something
    connection.unregister_callback(callback)

func(conn)
func(conn)
func(conn)

None of the callback objects will be destroyed until the connection object is destroyed. These callbacks could be holding resources that the user expects to be freed upon exiting func(). I would like to be able to add something to the unregister_callback pybind11 definition that would allow me to cancel keep_alive when unregister_callback is called.

Guia do colaborador