diff --git a/include/dap_events_python.h b/include/dap_events_python.h
new file mode 100644
index 0000000000000000000000000000000000000000..9f5dac4a65eadea4da6ee5e1c13bfb08fe9720cb
--- /dev/null
+++ b/include/dap_events_python.h
@@ -0,0 +1,45 @@
+#include "Python.h"
+#include "dap_events.h"
+
+typedef struct PyDapEvents{
+    PyObject_HEAD
+    dap_events_t *t_events;
+}PyDapEventsObject;
+
+static PyTypeObject dapEvents_dapEventsType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "libDapServerCore.DapEvents",             /* tp_name */
+    sizeof(PyDapEventsObject), /* tp_basicsize */
+    0,                         /* tp_itemsize */
+    0,                         /* tp_dealloc */
+    0,                         /* tp_print */
+    0,                         /* tp_getattr */
+    0,                         /* tp_setattr */
+    0,                         /* tp_compare */
+    0,                         /* tp_repr */
+    0,                         /* tp_as_number */
+    0,                         /* tp_as_sequence */
+    0,                         /* tp_as_mapping */
+    0,                         /* tp_hash */
+    0,                         /* tp_call */
+    0,                         /* tp_str */
+    0,                         /* tp_getattro */
+    0,                         /* tp_setattro */
+    0,                         /* tp_as_buffer */
+    Py_TPFLAGS_DEFAULT,        /* tp_flags */
+    "DapEvents objects",           /* tp_doc */
+};
+
+PyObject *dap_events_init_py(PyObject *self, PyObject *args); //uint32_t a_threads_count, size_t conn_t ); // Init server module
+PyObject *dap_events_deinit_py(); // Deinit server module
+
+PyObject *dap_events_new_py();
+PyObject *dap_events_delete_py(PyObject *self, PyObject *args); //dap_events_t * sh );
+//void dap_events_socket_remove_and_delete( dap_events_socket_t* a_es );
+PyObject *dap_events_socket_remove_and_delete_py(PyObject *self, PyObject *args); //dap_events_socket_t* a_es, bool preserve_inheritor );
+
+PyObject *dap_events_kill_socket_py(PyObject *self, PyObject *args); //dap_events_socket_t *a_es );
+
+PyObject *dap_events_start_py(PyObject *self, PyObject *args); //dap_events_t *sh );
+PyObject *dap_events_wait_py(PyObject *self, PyObject *args); //dap_events_t *sh );
+
diff --git a/include/libdap-server-core-python.h b/include/libdap-server-core-python.h
index 313bdf77e0de7018f1a3ea6ade1484ed06d6a81c..43bfbdb0becbd081a8ec12ed62d3172a52a838cd 100644
--- a/include/libdap-server-core-python.h
+++ b/include/libdap-server-core-python.h
@@ -4,6 +4,7 @@
 #include "dap_client_remote.h"
 #include "dap_events.h"
 #include "dap_common.h"
+#include "dap_events_python.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -14,9 +15,9 @@ typedef struct PyDapServer {
     dap_server_t *t_server;
 }PyDapServerObject;
 
-static PyTypeObject dapServer_dapServerType = {
+PyTypeObject dapServer_dapServerType = {
     PyVarObject_HEAD_INIT(NULL, 0)
-    "libdap_server_core_python_module.DapServer",             /* tp_name */
+    "libDapServerCore.DapServer",             /* tp_name */
     sizeof(PyDapServerObject), /* tp_basicsize */
     0,                         /* tp_itemsize */
     0,                         /* tp_dealloc */
@@ -41,7 +42,7 @@ static PyTypeObject dapServer_dapServerType = {
 #define LOG_TAG "libdap-server-core-python"
 
 static PyObject *dap_server_core_init(PyObject *self, PyObject *args);
-static PyObject *dap_server_core_deinit(void);
+static PyObject *dap_server_core_deinit();
 
 static PyObject *dap_server_core_loop(PyObject *self, PyObject *args);
 static PyObject *dap_server_core_listen(PyObject *self, PyObject *args);
@@ -51,6 +52,13 @@ static PyMethodDef DapServerCorePythonMethods[] = {
         {"deinit", dap_server_core_deinit, METH_NOARGS, "Deinitialization of the DAP (Deus Applicaions Prototypes) server core library"},
         {"loop", dap_server_core_loop, METH_VARARGS, ""},
         {"listen", dap_server_core_listen, METH_VARARGS, ""},
+        /* Wrapping Events */
+        {"eventsInit", dap_events_init_py, METH_VARARGS, ""},
+        {"eventsDeinit", dap_events_deinit_py, METH_NOARGS, ""},
+        {"eventsNew", dap_events_new_py, METH_NOARGS, ""},
+        {"eventsDellete", dap_events_delete_py, METH_VARARGS, ""},
+        {"eventsStart", dap_events_start_py, METH_VARARGS, ""},
+        {"eventsWait", dap_events_wait_py, METH_VARARGS, ""},
         {NULL, NULL, 0, NULL}
 };
 
diff --git a/src/dap_events_python.c b/src/dap_events_python.c
new file mode 100644
index 0000000000000000000000000000000000000000..0bf5307311de7f2a8ce1f416e84836a726a876d9
--- /dev/null
+++ b/src/dap_events_python.c
@@ -0,0 +1,55 @@
+#include "dap_events_python.h"
+
+PyObject *dap_events_init_py(PyObject *self, PyObject *args){
+    uint32_t a_threads_count;
+    size_t conn_t;
+    if (!PyArg_ParseTuple(args, "I|n", &a_threads_count, &conn_t)){
+        return NULL;
+    }
+    int32_t result = dap_events_init(a_threads_count, conn_t);
+    return PyLong_FromLong(result);
+}
+PyObject *dap_events_deinit_py(void){
+    dap_events_deinit();
+    return PyLong_FromLong(0);
+}
+
+PyObject *dap_events_new_py(void){
+    PyObject *new_dap_events_obj = _PyObject_New(&dapEvents_dapEventsType);
+    ((PyDapEventsObject*)new_dap_events_obj)->t_events = dap_events_new();
+    return Py_BuildValue("O", new_dap_events_obj);
+}
+PyObject *dap_events_delete_py(PyObject *self, PyObject *args){
+    PyObject *in_obj;
+    if (PyArg_ParseTuple(args, "O", &in_obj)){
+        return NULL;
+    }
+    dap_events_delete(((PyDapEventsObject*)in_obj)->t_events);
+    PyObject_Del(in_obj);
+    return PyLong_FromLong(0);
+}
+//void dap_events_socket_remove_and_delete( dap_events_socket_t* a_es );
+PyObject *dap_events_socket_remove_and_delete_py(PyObject *self, PyObject *args){
+    return PyLong_FromLong(0);
+}
+
+PyObject *dap_events_kill_socket_py(PyObject *self, PyObject *args){
+    return PyLong_FromLong(0);
+}
+
+PyObject *dap_events_start_py(PyObject *self, PyObject *args){
+    PyObject *in_object;
+    if (!PyArg_ParseTuple(args, "O", &in_object)){
+        return NULL;
+    }
+    int32_t result = dap_events_start(((PyDapEventsObject*)in_object)->t_events);
+    return PyLong_FromLong(result);
+}
+PyObject *dap_events_wait_py(PyObject *self, PyObject *args){
+    PyObject *in_object;
+    if (!PyArg_ParseTuple(args, "O", &in_object)){
+        return NULL;
+    }
+    int32_t result = dap_events_wait(((PyDapEventsObject*)in_object)->t_events);
+    return PyLong_FromLong(result);
+}
diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c
index a067ef37b73fa4af256373333fb8050589ea3dd1..e618cd3c6eb6753da7cd249c62c0a71fb26f0981 100644
--- a/src/libdap-server-core-python.c
+++ b/src/libdap-server-core-python.c
@@ -49,7 +49,8 @@ static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){
 
 PyMODINIT_FUNC PyInit_libDapServerCore(void){
     dapServer_dapServerType.tp_new = PyType_GenericNew;
-    if (PyType_Ready(&dapServer_dapServerType) < 0)
+    dapEvents_dapEventsType.tp_new = PyType_GenericNew;
+    if (PyType_Ready(&dapServer_dapServerType) < 0 || PyType_Ready(&dapEvents_dapEventsType) < 0)
             return NULL;
     return PyModule_Create(&dapservercorepythonmodule);
 }