mysqlengine 0.1.11.5__cp311-cp311-win_amd64.whl → 0.1.11.7__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mysqlengine might be problematic. Click here for more details.

mysqlengine/engine.c CHANGED
@@ -1766,7 +1766,7 @@ struct __pyx_obj_11mysqlengine_10connection_Server {
1766
1766
  };
1767
1767
 
1768
1768
 
1769
- /* "mysqlengine/engine.py":26
1769
+ /* "mysqlengine/engine.py":27
1770
1770
  * # Engine ========================================================================================
1771
1771
  * @cython.cclass
1772
1772
  * class Engine: # <<<<<<<<<<<<<<
@@ -1783,7 +1783,7 @@ struct __pyx_obj_11mysqlengine_6engine_Engine {
1783
1783
  };
1784
1784
 
1785
1785
 
1786
- /* "mysqlengine/engine.py":115
1786
+ /* "mysqlengine/engine.py":116
1787
1787
  *
1788
1788
  * # Access -------------------------------------------------------------------------------------
1789
1789
  * async def access(self, db: str, **init_args: Any) -> Database: # <<<<<<<<<<<<<<
@@ -1802,7 +1802,7 @@ struct __pyx_obj_11mysqlengine_6engine___pyx_scope_struct__access {
1802
1802
  };
1803
1803
 
1804
1804
 
1805
- /* "mysqlengine/engine.py":207
1805
+ /* "mysqlengine/engine.py":208
1806
1806
  *
1807
1807
  * # Disconnect ---------------------------------------------------------------------------------
1808
1808
  * async def disconnect(self, countdown: Union[int, None] = None) -> None: # <<<<<<<<<<<<<<
@@ -1984,7 +1984,7 @@ struct __pyx_vtabstruct_11mysqlengine_10connection_Server {
1984
1984
  static struct __pyx_vtabstruct_11mysqlengine_10connection_Server *__pyx_vtabptr_11mysqlengine_10connection_Server;
1985
1985
 
1986
1986
 
1987
- /* "mysqlengine/engine.py":26
1987
+ /* "mysqlengine/engine.py":27
1988
1988
  * # Engine ========================================================================================
1989
1989
  * @cython.cclass
1990
1990
  * class Engine: # <<<<<<<<<<<<<<
@@ -2538,6 +2538,11 @@ static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject
2538
2538
  /* pep479.proto */
2539
2539
  static void __Pyx_Generator_Replace_StopIteration(int in_async_gen);
2540
2540
 
2541
+ /* WriteUnraisableException.proto */
2542
+ static void __Pyx_WriteUnraisable(const char *name, int clineno,
2543
+ int lineno, const char *filename,
2544
+ int full_traceback, int nogil);
2545
+
2541
2546
  /* KeywordStringCheck.proto */
2542
2547
  static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed);
2543
2548
 
@@ -2924,6 +2929,7 @@ static const char __pyx_k_test[] = "__test__";
2924
2929
  static const char __pyx_k_Union[] = "Union";
2925
2930
  static const char __pyx_k_await[] = "__await__";
2926
2931
  static const char __pyx_k_close[] = "close";
2932
+ static const char __pyx_k_error[] = "error";
2927
2933
  static const char __pyx_k_state[] = "state";
2928
2934
  static const char __pyx_k_throw[] = "throw";
2929
2935
  static const char __pyx_k_utils[] = "utils";
@@ -2937,6 +2943,7 @@ static const char __pyx_k_enable[] = "enable";
2937
2943
  static const char __pyx_k_errors[] = "errors";
2938
2944
  static const char __pyx_k_format[] = "format";
2939
2945
  static const char __pyx_k_import[] = "__import__";
2946
+ static const char __pyx_k_logger[] = "logger";
2940
2947
  static const char __pyx_k_pickle[] = "pickle";
2941
2948
  static const char __pyx_k_reduce[] = "__reduce__";
2942
2949
  static const char __pyx_k_return[] = "return";
@@ -2966,11 +2973,13 @@ static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
2966
2973
  static const char __pyx_k_stringsource[] = "<stringsource>";
2967
2974
  static const char __pyx_k_use_setstate[] = "use_setstate";
2968
2975
  static const char __pyx_k_Engine_access[] = "Engine.access";
2976
+ static const char __pyx_k_encure_closed[] = "_encure_closed";
2969
2977
  static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
2970
2978
  static const char __pyx_k_Union_int_None[] = "Union[int, None]";
2971
2979
  static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
2972
2980
  static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
2973
2981
  static const char __pyx_k_MysqlEngineError[] = "MysqlEngineError";
2982
+ static const char __pyx_k_mysqlengine_logs[] = "mysqlengine.logs";
2974
2983
  static const char __pyx_k_Engine_disconnect[] = "Engine.disconnect";
2975
2984
  static const char __pyx_k_Engine_databases_s[] = "<Engine (databases=%s)>";
2976
2985
  static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
@@ -2980,9 +2989,9 @@ static const char __pyx_k_EngineDatabaseError[] = "EngineDatabaseError";
2980
2989
  static const char __pyx_k_pyx_unpickle_Engine[] = "__pyx_unpickle_Engine";
2981
2990
  static const char __pyx_k_mysqlengine_database[] = "mysqlengine.database";
2982
2991
  static const char __pyx_k_Engine___reduce_cython[] = "Engine.__reduce_cython__";
2983
- static const char __pyx_k_Engine_access_line_115[] = "Engine.access (line 115)";
2992
+ static const char __pyx_k_Engine_access_line_116[] = "Engine.access (line 116)";
2984
2993
  static const char __pyx_k_mysqlengine_connection[] = "mysqlengine.connection";
2985
- static const char __pyx_k_Engine___init___line_36[] = "Engine.__init__ (line 36)";
2994
+ static const char __pyx_k_Engine___init___line_37[] = "Engine.__init__ (line 37)";
2986
2995
  static const char __pyx_k_Engine___setstate_cython[] = "Engine.__setstate_cython__";
2987
2996
  static const char __pyx_k_src_mysqlengine_engine_py[] = "src\\mysqlengine\\engine.py";
2988
2997
  static const char __pyx_k_EngineDatabaseAccessKeyError[] = "EngineDatabaseAccessKeyError";
@@ -2992,6 +3001,7 @@ static const char __pyx_k_Engine_Failed_to_instantiate_da[] = "-> <Engine> Faile
2992
3001
  static const char __pyx_k_Engine_The_database_access_name[] = "<Engine> The database access name '{}' does not belong to this Engine.\nAvailable access names: {}.";
2993
3002
  static const char __pyx_k_Engine_The_databases_argument_c[] = "<Engine> The 'databases' argument cannot be empty.";
2994
3003
  static const char __pyx_k_Engine_The_value_of_the_databas[] = "<Engine> The value of the 'databases' dictionary must be a subclass of `<Database>`, instead of: {} {}.";
3004
+ static const char __pyx_k_s_is_not_closed_properly_Please[] = "%s is not closed properly. Please call `disconnect()` to gracefully shutdown the Engine.";
2995
3005
  static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0x55f7bbc, 0x206eea4, 0x0a13b33) = (_databases, _databases_cls, _length, _server))";
2996
3006
  static const char __pyx_k_The_proxy_for_accessing_Database[] = "The proxy for accessing Databases hosted on a Server.\n\n :param server: `<Server>` The server that hosts the databases.\n :param databases [keyword arguments]: `<type[Database]>` The the databases of the server.\n * Key: `<str>` Access name of the Database, used in the `access()`\n method to access & instantiate the Database.\n * Value: Subclass of `<Database>` Represents a specific database\n on the Server (NOT an instance). `<Database>` subclass' `__init__`\n method must accept 'server' as an argument.\n\n For more information about accessing & instantiating databases,\n please refer to the Example section below.\n\n ### Example\n >>> from mysqlengine import Server, Engine, Database\n\n >>> # Server\n server = Server(host=\"localhost\", user=\"root\", password=\"password\")\n\n >>> # MyDatabase1 (only takes 'server' as an argument)\n class MyDatabase1(Database):\n def __init__(self, server: Server):\n super().__init__(server, name=\"mydb1\")\n ...\n\n >>> # MyDatabase2 (takes 'server' and 'country' as arguments)\n class MyDatabase2(Database):\n def __init__(server: Server, country: str):\n name = \"mydb2_\" + country\n super().__init__(server, name=name)\n\n >>> # Engine\n engine = Engine(server, mydb1=MyDatabase1, mydb2=MyDatabase2)\n\n >>> # Access MyDatabase1\n db1 = await engine.access(\"mydb1\")\n\n >>> # Access MyDatabase2\n db2_us = await engine.access(\"mydb2\", country=\"us\")\n db2_ca = await engine.access(\"mydb2\", country=\"ca\")\n ";
2997
3007
  static const char __pyx_k_Engine_Failed_to_instantiate_da_2[] = "<Engine> Failed to instantiate database {}.\nInitiate arguments: {}.\nError: {}";
@@ -3098,11 +3108,11 @@ typedef struct {
3098
3108
  PyObject *__pyx_kp_u_Engine_The_database_access_name;
3099
3109
  PyObject *__pyx_kp_u_Engine_The_databases_argument_c;
3100
3110
  PyObject *__pyx_kp_u_Engine_The_value_of_the_databas;
3101
- PyObject *__pyx_kp_u_Engine___init___line_36;
3111
+ PyObject *__pyx_kp_u_Engine___init___line_37;
3102
3112
  PyObject *__pyx_n_s_Engine___reduce_cython;
3103
3113
  PyObject *__pyx_n_s_Engine___setstate_cython;
3104
3114
  PyObject *__pyx_n_s_Engine_access;
3105
- PyObject *__pyx_kp_u_Engine_access_line_115;
3115
+ PyObject *__pyx_kp_u_Engine_access_line_116;
3106
3116
  PyObject *__pyx_kp_u_Engine_databases_s;
3107
3117
  PyObject *__pyx_n_s_Engine_disconnect;
3108
3118
  PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
@@ -3134,7 +3144,9 @@ typedef struct {
3134
3144
  PyObject *__pyx_kp_u_disable;
3135
3145
  PyObject *__pyx_n_s_disconnect;
3136
3146
  PyObject *__pyx_kp_u_enable;
3147
+ PyObject *__pyx_n_s_encure_closed;
3137
3148
  PyObject *__pyx_n_s_err;
3149
+ PyObject *__pyx_n_s_error;
3138
3150
  PyObject *__pyx_n_s_errors;
3139
3151
  PyObject *__pyx_n_s_format;
3140
3152
  PyObject *__pyx_kp_u_gc;
@@ -3144,11 +3156,13 @@ typedef struct {
3144
3156
  PyObject *__pyx_n_s_initiate;
3145
3157
  PyObject *__pyx_n_s_is_coroutine;
3146
3158
  PyObject *__pyx_kp_u_isenabled;
3159
+ PyObject *__pyx_n_s_logger;
3147
3160
  PyObject *__pyx_n_s_main;
3148
3161
  PyObject *__pyx_n_s_mysqlengine;
3149
3162
  PyObject *__pyx_n_s_mysqlengine_connection;
3150
3163
  PyObject *__pyx_n_s_mysqlengine_database;
3151
3164
  PyObject *__pyx_n_s_mysqlengine_engine;
3165
+ PyObject *__pyx_n_s_mysqlengine_logs;
3152
3166
  PyObject *__pyx_n_s_name;
3153
3167
  PyObject *__pyx_n_s_new;
3154
3168
  PyObject *__pyx_n_s_pickle;
@@ -3163,6 +3177,7 @@ typedef struct {
3163
3177
  PyObject *__pyx_n_s_reduce_cython;
3164
3178
  PyObject *__pyx_n_s_reduce_ex;
3165
3179
  PyObject *__pyx_n_s_return;
3180
+ PyObject *__pyx_kp_u_s_is_not_closed_properly_Please;
3166
3181
  PyObject *__pyx_n_s_self;
3167
3182
  PyObject *__pyx_n_s_send;
3168
3183
  PyObject *__pyx_n_s_server;
@@ -3266,11 +3281,11 @@ static int __pyx_m_clear(PyObject *m) {
3266
3281
  Py_CLEAR(clear_module_state->__pyx_kp_u_Engine_The_database_access_name);
3267
3282
  Py_CLEAR(clear_module_state->__pyx_kp_u_Engine_The_databases_argument_c);
3268
3283
  Py_CLEAR(clear_module_state->__pyx_kp_u_Engine_The_value_of_the_databas);
3269
- Py_CLEAR(clear_module_state->__pyx_kp_u_Engine___init___line_36);
3284
+ Py_CLEAR(clear_module_state->__pyx_kp_u_Engine___init___line_37);
3270
3285
  Py_CLEAR(clear_module_state->__pyx_n_s_Engine___reduce_cython);
3271
3286
  Py_CLEAR(clear_module_state->__pyx_n_s_Engine___setstate_cython);
3272
3287
  Py_CLEAR(clear_module_state->__pyx_n_s_Engine_access);
3273
- Py_CLEAR(clear_module_state->__pyx_kp_u_Engine_access_line_115);
3288
+ Py_CLEAR(clear_module_state->__pyx_kp_u_Engine_access_line_116);
3274
3289
  Py_CLEAR(clear_module_state->__pyx_kp_u_Engine_databases_s);
3275
3290
  Py_CLEAR(clear_module_state->__pyx_n_s_Engine_disconnect);
3276
3291
  Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
@@ -3302,7 +3317,9 @@ static int __pyx_m_clear(PyObject *m) {
3302
3317
  Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
3303
3318
  Py_CLEAR(clear_module_state->__pyx_n_s_disconnect);
3304
3319
  Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
3320
+ Py_CLEAR(clear_module_state->__pyx_n_s_encure_closed);
3305
3321
  Py_CLEAR(clear_module_state->__pyx_n_s_err);
3322
+ Py_CLEAR(clear_module_state->__pyx_n_s_error);
3306
3323
  Py_CLEAR(clear_module_state->__pyx_n_s_errors);
3307
3324
  Py_CLEAR(clear_module_state->__pyx_n_s_format);
3308
3325
  Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
@@ -3312,11 +3329,13 @@ static int __pyx_m_clear(PyObject *m) {
3312
3329
  Py_CLEAR(clear_module_state->__pyx_n_s_initiate);
3313
3330
  Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
3314
3331
  Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
3332
+ Py_CLEAR(clear_module_state->__pyx_n_s_logger);
3315
3333
  Py_CLEAR(clear_module_state->__pyx_n_s_main);
3316
3334
  Py_CLEAR(clear_module_state->__pyx_n_s_mysqlengine);
3317
3335
  Py_CLEAR(clear_module_state->__pyx_n_s_mysqlengine_connection);
3318
3336
  Py_CLEAR(clear_module_state->__pyx_n_s_mysqlengine_database);
3319
3337
  Py_CLEAR(clear_module_state->__pyx_n_s_mysqlengine_engine);
3338
+ Py_CLEAR(clear_module_state->__pyx_n_s_mysqlengine_logs);
3320
3339
  Py_CLEAR(clear_module_state->__pyx_n_s_name);
3321
3340
  Py_CLEAR(clear_module_state->__pyx_n_s_new);
3322
3341
  Py_CLEAR(clear_module_state->__pyx_n_s_pickle);
@@ -3331,6 +3350,7 @@ static int __pyx_m_clear(PyObject *m) {
3331
3350
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython);
3332
3351
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex);
3333
3352
  Py_CLEAR(clear_module_state->__pyx_n_s_return);
3353
+ Py_CLEAR(clear_module_state->__pyx_kp_u_s_is_not_closed_properly_Please);
3334
3354
  Py_CLEAR(clear_module_state->__pyx_n_s_self);
3335
3355
  Py_CLEAR(clear_module_state->__pyx_n_s_send);
3336
3356
  Py_CLEAR(clear_module_state->__pyx_n_s_server);
@@ -3412,11 +3432,11 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3412
3432
  Py_VISIT(traverse_module_state->__pyx_kp_u_Engine_The_database_access_name);
3413
3433
  Py_VISIT(traverse_module_state->__pyx_kp_u_Engine_The_databases_argument_c);
3414
3434
  Py_VISIT(traverse_module_state->__pyx_kp_u_Engine_The_value_of_the_databas);
3415
- Py_VISIT(traverse_module_state->__pyx_kp_u_Engine___init___line_36);
3435
+ Py_VISIT(traverse_module_state->__pyx_kp_u_Engine___init___line_37);
3416
3436
  Py_VISIT(traverse_module_state->__pyx_n_s_Engine___reduce_cython);
3417
3437
  Py_VISIT(traverse_module_state->__pyx_n_s_Engine___setstate_cython);
3418
3438
  Py_VISIT(traverse_module_state->__pyx_n_s_Engine_access);
3419
- Py_VISIT(traverse_module_state->__pyx_kp_u_Engine_access_line_115);
3439
+ Py_VISIT(traverse_module_state->__pyx_kp_u_Engine_access_line_116);
3420
3440
  Py_VISIT(traverse_module_state->__pyx_kp_u_Engine_databases_s);
3421
3441
  Py_VISIT(traverse_module_state->__pyx_n_s_Engine_disconnect);
3422
3442
  Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
@@ -3448,7 +3468,9 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3448
3468
  Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
3449
3469
  Py_VISIT(traverse_module_state->__pyx_n_s_disconnect);
3450
3470
  Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
3471
+ Py_VISIT(traverse_module_state->__pyx_n_s_encure_closed);
3451
3472
  Py_VISIT(traverse_module_state->__pyx_n_s_err);
3473
+ Py_VISIT(traverse_module_state->__pyx_n_s_error);
3452
3474
  Py_VISIT(traverse_module_state->__pyx_n_s_errors);
3453
3475
  Py_VISIT(traverse_module_state->__pyx_n_s_format);
3454
3476
  Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
@@ -3458,11 +3480,13 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3458
3480
  Py_VISIT(traverse_module_state->__pyx_n_s_initiate);
3459
3481
  Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
3460
3482
  Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
3483
+ Py_VISIT(traverse_module_state->__pyx_n_s_logger);
3461
3484
  Py_VISIT(traverse_module_state->__pyx_n_s_main);
3462
3485
  Py_VISIT(traverse_module_state->__pyx_n_s_mysqlengine);
3463
3486
  Py_VISIT(traverse_module_state->__pyx_n_s_mysqlengine_connection);
3464
3487
  Py_VISIT(traverse_module_state->__pyx_n_s_mysqlengine_database);
3465
3488
  Py_VISIT(traverse_module_state->__pyx_n_s_mysqlengine_engine);
3489
+ Py_VISIT(traverse_module_state->__pyx_n_s_mysqlengine_logs);
3466
3490
  Py_VISIT(traverse_module_state->__pyx_n_s_name);
3467
3491
  Py_VISIT(traverse_module_state->__pyx_n_s_new);
3468
3492
  Py_VISIT(traverse_module_state->__pyx_n_s_pickle);
@@ -3477,6 +3501,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3477
3501
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython);
3478
3502
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex);
3479
3503
  Py_VISIT(traverse_module_state->__pyx_n_s_return);
3504
+ Py_VISIT(traverse_module_state->__pyx_kp_u_s_is_not_closed_properly_Please);
3480
3505
  Py_VISIT(traverse_module_state->__pyx_n_s_self);
3481
3506
  Py_VISIT(traverse_module_state->__pyx_n_s_send);
3482
3507
  Py_VISIT(traverse_module_state->__pyx_n_s_server);
@@ -3596,11 +3621,11 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3596
3621
  #define __pyx_kp_u_Engine_The_database_access_name __pyx_mstate_global->__pyx_kp_u_Engine_The_database_access_name
3597
3622
  #define __pyx_kp_u_Engine_The_databases_argument_c __pyx_mstate_global->__pyx_kp_u_Engine_The_databases_argument_c
3598
3623
  #define __pyx_kp_u_Engine_The_value_of_the_databas __pyx_mstate_global->__pyx_kp_u_Engine_The_value_of_the_databas
3599
- #define __pyx_kp_u_Engine___init___line_36 __pyx_mstate_global->__pyx_kp_u_Engine___init___line_36
3624
+ #define __pyx_kp_u_Engine___init___line_37 __pyx_mstate_global->__pyx_kp_u_Engine___init___line_37
3600
3625
  #define __pyx_n_s_Engine___reduce_cython __pyx_mstate_global->__pyx_n_s_Engine___reduce_cython
3601
3626
  #define __pyx_n_s_Engine___setstate_cython __pyx_mstate_global->__pyx_n_s_Engine___setstate_cython
3602
3627
  #define __pyx_n_s_Engine_access __pyx_mstate_global->__pyx_n_s_Engine_access
3603
- #define __pyx_kp_u_Engine_access_line_115 __pyx_mstate_global->__pyx_kp_u_Engine_access_line_115
3628
+ #define __pyx_kp_u_Engine_access_line_116 __pyx_mstate_global->__pyx_kp_u_Engine_access_line_116
3604
3629
  #define __pyx_kp_u_Engine_databases_s __pyx_mstate_global->__pyx_kp_u_Engine_databases_s
3605
3630
  #define __pyx_n_s_Engine_disconnect __pyx_mstate_global->__pyx_n_s_Engine_disconnect
3606
3631
  #define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0
@@ -3632,7 +3657,9 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3632
3657
  #define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
3633
3658
  #define __pyx_n_s_disconnect __pyx_mstate_global->__pyx_n_s_disconnect
3634
3659
  #define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
3660
+ #define __pyx_n_s_encure_closed __pyx_mstate_global->__pyx_n_s_encure_closed
3635
3661
  #define __pyx_n_s_err __pyx_mstate_global->__pyx_n_s_err
3662
+ #define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error
3636
3663
  #define __pyx_n_s_errors __pyx_mstate_global->__pyx_n_s_errors
3637
3664
  #define __pyx_n_s_format __pyx_mstate_global->__pyx_n_s_format
3638
3665
  #define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
@@ -3642,11 +3669,13 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3642
3669
  #define __pyx_n_s_initiate __pyx_mstate_global->__pyx_n_s_initiate
3643
3670
  #define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
3644
3671
  #define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
3672
+ #define __pyx_n_s_logger __pyx_mstate_global->__pyx_n_s_logger
3645
3673
  #define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
3646
3674
  #define __pyx_n_s_mysqlengine __pyx_mstate_global->__pyx_n_s_mysqlengine
3647
3675
  #define __pyx_n_s_mysqlengine_connection __pyx_mstate_global->__pyx_n_s_mysqlengine_connection
3648
3676
  #define __pyx_n_s_mysqlengine_database __pyx_mstate_global->__pyx_n_s_mysqlengine_database
3649
3677
  #define __pyx_n_s_mysqlengine_engine __pyx_mstate_global->__pyx_n_s_mysqlengine_engine
3678
+ #define __pyx_n_s_mysqlengine_logs __pyx_mstate_global->__pyx_n_s_mysqlengine_logs
3650
3679
  #define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
3651
3680
  #define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new
3652
3681
  #define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle
@@ -3661,6 +3690,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3661
3690
  #define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython
3662
3691
  #define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex
3663
3692
  #define __pyx_n_s_return __pyx_mstate_global->__pyx_n_s_return
3693
+ #define __pyx_kp_u_s_is_not_closed_properly_Please __pyx_mstate_global->__pyx_kp_u_s_is_not_closed_properly_Please
3664
3694
  #define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self
3665
3695
  #define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send
3666
3696
  #define __pyx_n_s_server __pyx_mstate_global->__pyx_n_s_server
@@ -3694,7 +3724,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3694
3724
  #define __pyx_codeobj__14 __pyx_mstate_global->__pyx_codeobj__14
3695
3725
  /* #### Code section: module_code ### */
3696
3726
 
3697
- /* "mysqlengine/engine.py":36
3727
+ /* "mysqlengine/engine.py":37
3698
3728
  * _length: cython.int
3699
3729
  *
3700
3730
  * def __init__( # <<<<<<<<<<<<<<
@@ -3745,12 +3775,12 @@ static int __pyx_pw_11mysqlengine_6engine_6Engine_1__init__(PyObject *__pyx_v_se
3745
3775
  (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
3746
3776
  kw_args--;
3747
3777
  }
3748
- else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L3_error)
3778
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 37, __pyx_L3_error)
3749
3779
  else goto __pyx_L5_argtuple_error;
3750
3780
  }
3751
3781
  if (unlikely(kw_args > 0)) {
3752
3782
  const Py_ssize_t kwd_pos_args = __pyx_nargs;
3753
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_databases, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 36, __pyx_L3_error)
3783
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_databases, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 37, __pyx_L3_error)
3754
3784
  }
3755
3785
  } else if (unlikely(__pyx_nargs != 1)) {
3756
3786
  goto __pyx_L5_argtuple_error;
@@ -3761,7 +3791,7 @@ static int __pyx_pw_11mysqlengine_6engine_6Engine_1__init__(PyObject *__pyx_v_se
3761
3791
  }
3762
3792
  goto __pyx_L6_skip;
3763
3793
  __pyx_L5_argtuple_error:;
3764
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 36, __pyx_L3_error)
3794
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 37, __pyx_L3_error)
3765
3795
  __pyx_L6_skip:;
3766
3796
  goto __pyx_L4_argument_unpacking_done;
3767
3797
  __pyx_L3_error:;
@@ -3776,7 +3806,7 @@ static int __pyx_pw_11mysqlengine_6engine_6Engine_1__init__(PyObject *__pyx_v_se
3776
3806
  __Pyx_RefNannyFinishContext();
3777
3807
  return -1;
3778
3808
  __pyx_L4_argument_unpacking_done:;
3779
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_server), __pyx_ptype_11mysqlengine_10connection_Server, 0, "server", 0))) __PYX_ERR(0, 38, __pyx_L1_error)
3809
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_server), __pyx_ptype_11mysqlengine_10connection_Server, 0, "server", 0))) __PYX_ERR(0, 39, __pyx_L1_error)
3780
3810
  __pyx_r = __pyx_pf_11mysqlengine_6engine_6Engine___init__(((struct __pyx_obj_11mysqlengine_6engine_Engine *)__pyx_v_self), __pyx_v_server, __pyx_v_databases);
3781
3811
 
3782
3812
  /* function exit code */
@@ -3804,7 +3834,7 @@ static int __pyx_pf_11mysqlengine_6engine_6Engine___init__(struct __pyx_obj_11my
3804
3834
  int __pyx_clineno = 0;
3805
3835
  __Pyx_RefNannySetupContext("__init__", 1);
3806
3836
 
3807
- /* "mysqlengine/engine.py":83
3837
+ /* "mysqlengine/engine.py":84
3808
3838
  * """
3809
3839
  * # Server
3810
3840
  * self._server = server # <<<<<<<<<<<<<<
@@ -3817,14 +3847,14 @@ static int __pyx_pf_11mysqlengine_6engine_6Engine___init__(struct __pyx_obj_11my
3817
3847
  __Pyx_DECREF((PyObject *)__pyx_v_self->_server);
3818
3848
  __pyx_v_self->_server = __pyx_v_server;
3819
3849
 
3820
- /* "mysqlengine/engine.py":84
3850
+ /* "mysqlengine/engine.py":85
3821
3851
  * # Server
3822
3852
  * self._server = server
3823
3853
  * self._databases = {} # <<<<<<<<<<<<<<
3824
3854
  * self._validate_databases(databases)
3825
3855
  *
3826
3856
  */
3827
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error)
3857
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error)
3828
3858
  __Pyx_GOTREF(__pyx_t_1);
3829
3859
  __Pyx_GIVEREF(__pyx_t_1);
3830
3860
  __Pyx_GOTREF(__pyx_v_self->_databases);
@@ -3832,18 +3862,18 @@ static int __pyx_pf_11mysqlengine_6engine_6Engine___init__(struct __pyx_obj_11my
3832
3862
  __pyx_v_self->_databases = ((PyObject*)__pyx_t_1);
3833
3863
  __pyx_t_1 = 0;
3834
3864
 
3835
- /* "mysqlengine/engine.py":85
3865
+ /* "mysqlengine/engine.py":86
3836
3866
  * self._server = server
3837
3867
  * self._databases = {}
3838
3868
  * self._validate_databases(databases) # <<<<<<<<<<<<<<
3839
3869
  *
3840
3870
  * # Properties ---------------------------------------------------------------------------------
3841
3871
  */
3842
- __pyx_t_1 = ((struct __pyx_vtabstruct_11mysqlengine_6engine_Engine *)__pyx_v_self->__pyx_vtab)->_validate_databases(__pyx_v_self, __pyx_v_databases); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error)
3872
+ __pyx_t_1 = ((struct __pyx_vtabstruct_11mysqlengine_6engine_Engine *)__pyx_v_self->__pyx_vtab)->_validate_databases(__pyx_v_self, __pyx_v_databases); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error)
3843
3873
  __Pyx_GOTREF(__pyx_t_1);
3844
3874
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3845
3875
 
3846
- /* "mysqlengine/engine.py":36
3876
+ /* "mysqlengine/engine.py":37
3847
3877
  * _length: cython.int
3848
3878
  *
3849
3879
  * def __init__( # <<<<<<<<<<<<<<
@@ -3863,7 +3893,7 @@ static int __pyx_pf_11mysqlengine_6engine_6Engine___init__(struct __pyx_obj_11my
3863
3893
  return __pyx_r;
3864
3894
  }
3865
3895
 
3866
- /* "mysqlengine/engine.py":88
3896
+ /* "mysqlengine/engine.py":89
3867
3897
  *
3868
3898
  * # Properties ---------------------------------------------------------------------------------
3869
3899
  * @property # <<<<<<<<<<<<<<
@@ -3891,7 +3921,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_6server___get__(struct _
3891
3921
  __Pyx_RefNannyDeclarations
3892
3922
  __Pyx_RefNannySetupContext("__get__", 1);
3893
3923
 
3894
- /* "mysqlengine/engine.py":91
3924
+ /* "mysqlengine/engine.py":92
3895
3925
  * def server(self) -> Server:
3896
3926
  * "The underlying server of the engine `<Server>`"
3897
3927
  * return self._server # <<<<<<<<<<<<<<
@@ -3903,7 +3933,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_6server___get__(struct _
3903
3933
  __pyx_r = ((PyObject *)__pyx_v_self->_server);
3904
3934
  goto __pyx_L0;
3905
3935
 
3906
- /* "mysqlengine/engine.py":88
3936
+ /* "mysqlengine/engine.py":89
3907
3937
  *
3908
3938
  * # Properties ---------------------------------------------------------------------------------
3909
3939
  * @property # <<<<<<<<<<<<<<
@@ -3918,7 +3948,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_6server___get__(struct _
3918
3948
  return __pyx_r;
3919
3949
  }
3920
3950
 
3921
- /* "mysqlengine/engine.py":94
3951
+ /* "mysqlengine/engine.py":95
3922
3952
  *
3923
3953
  * # Validation ---------------------------------------------------------------------------------
3924
3954
  * @cython.cfunc # <<<<<<<<<<<<<<
@@ -3947,27 +3977,27 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
3947
3977
  int __pyx_clineno = 0;
3948
3978
  __Pyx_RefNannySetupContext("_validate_databases", 1);
3949
3979
 
3950
- /* "mysqlengine/engine.py":98
3980
+ /* "mysqlengine/engine.py":99
3951
3981
  * def _validate_databases(self, databases: dict):
3952
3982
  * "(cfunc) Validate the 'databases' argument."
3953
3983
  * if not databases: # <<<<<<<<<<<<<<
3954
3984
  * raise errors.EngineDatabaseError(
3955
3985
  * "<Engine> The 'databases' argument cannot be empty."
3956
3986
  */
3957
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_databases); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 98, __pyx_L1_error)
3987
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_databases); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 99, __pyx_L1_error)
3958
3988
  __pyx_t_2 = (!__pyx_t_1);
3959
3989
  if (unlikely(__pyx_t_2)) {
3960
3990
 
3961
- /* "mysqlengine/engine.py":99
3991
+ /* "mysqlengine/engine.py":100
3962
3992
  * "(cfunc) Validate the 'databases' argument."
3963
3993
  * if not databases:
3964
3994
  * raise errors.EngineDatabaseError( # <<<<<<<<<<<<<<
3965
3995
  * "<Engine> The 'databases' argument cannot be empty."
3966
3996
  * )
3967
3997
  */
3968
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_errors); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error)
3998
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_errors); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error)
3969
3999
  __Pyx_GOTREF(__pyx_t_4);
3970
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_EngineDatabaseError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error)
4000
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_EngineDatabaseError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error)
3971
4001
  __Pyx_GOTREF(__pyx_t_5);
3972
4002
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3973
4003
  __pyx_t_4 = NULL;
@@ -3988,15 +4018,15 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
3988
4018
  PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_Engine_The_databases_argument_c};
3989
4019
  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
3990
4020
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
3991
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error)
4021
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error)
3992
4022
  __Pyx_GOTREF(__pyx_t_3);
3993
4023
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3994
4024
  }
3995
4025
  __Pyx_Raise(__pyx_t_3, 0, 0, 0);
3996
4026
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3997
- __PYX_ERR(0, 99, __pyx_L1_error)
4027
+ __PYX_ERR(0, 100, __pyx_L1_error)
3998
4028
 
3999
- /* "mysqlengine/engine.py":98
4029
+ /* "mysqlengine/engine.py":99
4000
4030
  * def _validate_databases(self, databases: dict):
4001
4031
  * "(cfunc) Validate the 'databases' argument."
4002
4032
  * if not databases: # <<<<<<<<<<<<<<
@@ -4005,18 +4035,18 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
4005
4035
  */
4006
4036
  }
4007
4037
 
4008
- /* "mysqlengine/engine.py":102
4038
+ /* "mysqlengine/engine.py":103
4009
4039
  * "<Engine> The 'databases' argument cannot be empty."
4010
4040
  * )
4011
4041
  * for db_cls in dict_values(databases): # <<<<<<<<<<<<<<
4012
4042
  * # . validate database class
4013
4043
  * if type(db_cls) is not type or not issubclass(db_cls, Database):
4014
4044
  */
4015
- __pyx_t_3 = PyDict_Values(__pyx_v_databases); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error)
4045
+ __pyx_t_3 = PyDict_Values(__pyx_v_databases); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
4016
4046
  __Pyx_GOTREF(__pyx_t_3);
4017
4047
  if (unlikely(__pyx_t_3 == Py_None)) {
4018
4048
  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
4019
- __PYX_ERR(0, 102, __pyx_L1_error)
4049
+ __PYX_ERR(0, 103, __pyx_L1_error)
4020
4050
  }
4021
4051
  __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5);
4022
4052
  __pyx_t_7 = 0;
@@ -4025,20 +4055,20 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
4025
4055
  {
4026
4056
  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
4027
4057
  #if !CYTHON_ASSUME_SAFE_MACROS
4028
- if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 102, __pyx_L1_error)
4058
+ if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 103, __pyx_L1_error)
4029
4059
  #endif
4030
4060
  if (__pyx_t_7 >= __pyx_temp) break;
4031
4061
  }
4032
4062
  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
4033
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(0, 102, __pyx_L1_error)
4063
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(0, 103, __pyx_L1_error)
4034
4064
  #else
4035
- __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error)
4065
+ __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
4036
4066
  __Pyx_GOTREF(__pyx_t_3);
4037
4067
  #endif
4038
4068
  __Pyx_XDECREF_SET(__pyx_v_db_cls, __pyx_t_3);
4039
4069
  __pyx_t_3 = 0;
4040
4070
 
4041
- /* "mysqlengine/engine.py":104
4071
+ /* "mysqlengine/engine.py":105
4042
4072
  * for db_cls in dict_values(databases):
4043
4073
  * # . validate database class
4044
4074
  * if type(db_cls) is not type or not issubclass(db_cls, Database): # <<<<<<<<<<<<<<
@@ -4051,46 +4081,46 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
4051
4081
  __pyx_t_2 = __pyx_t_1;
4052
4082
  goto __pyx_L7_bool_binop_done;
4053
4083
  }
4054
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Database); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 104, __pyx_L1_error)
4084
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Database); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error)
4055
4085
  __Pyx_GOTREF(__pyx_t_3);
4056
- __pyx_t_1 = PyObject_IsSubclass(__pyx_v_db_cls, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 104, __pyx_L1_error)
4086
+ __pyx_t_1 = PyObject_IsSubclass(__pyx_v_db_cls, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 105, __pyx_L1_error)
4057
4087
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4058
4088
  __pyx_t_8 = (!__pyx_t_1);
4059
4089
  __pyx_t_2 = __pyx_t_8;
4060
4090
  __pyx_L7_bool_binop_done:;
4061
4091
  if (unlikely(__pyx_t_2)) {
4062
4092
 
4063
- /* "mysqlengine/engine.py":105
4093
+ /* "mysqlengine/engine.py":106
4064
4094
  * # . validate database class
4065
4095
  * if type(db_cls) is not type or not issubclass(db_cls, Database):
4066
4096
  * raise errors.EngineDatabaseError( # <<<<<<<<<<<<<<
4067
4097
  * "<Engine> The value of the 'databases' dictionary "
4068
4098
  * "must be a subclass of `<Database>`, instead of: {} {}.".format(
4069
4099
  */
4070
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_errors); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error)
4100
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_errors); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 106, __pyx_L1_error)
4071
4101
  __Pyx_GOTREF(__pyx_t_4);
4072
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_EngineDatabaseError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 105, __pyx_L1_error)
4102
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_EngineDatabaseError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 106, __pyx_L1_error)
4073
4103
  __Pyx_GOTREF(__pyx_t_9);
4074
4104
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4075
4105
 
4076
- /* "mysqlengine/engine.py":107
4106
+ /* "mysqlengine/engine.py":108
4077
4107
  * raise errors.EngineDatabaseError(
4078
4108
  * "<Engine> The value of the 'databases' dictionary "
4079
4109
  * "must be a subclass of `<Database>`, instead of: {} {}.".format( # <<<<<<<<<<<<<<
4080
4110
  * type(db_cls), repr(db_cls)
4081
4111
  * )
4082
4112
  */
4083
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Engine_The_value_of_the_databas, __pyx_n_s_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 107, __pyx_L1_error)
4113
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Engine_The_value_of_the_databas, __pyx_n_s_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 108, __pyx_L1_error)
4084
4114
  __Pyx_GOTREF(__pyx_t_10);
4085
4115
 
4086
- /* "mysqlengine/engine.py":108
4116
+ /* "mysqlengine/engine.py":109
4087
4117
  * "<Engine> The value of the 'databases' dictionary "
4088
4118
  * "must be a subclass of `<Database>`, instead of: {} {}.".format(
4089
4119
  * type(db_cls), repr(db_cls) # <<<<<<<<<<<<<<
4090
4120
  * )
4091
4121
  * )
4092
4122
  */
4093
- __pyx_t_11 = PyObject_Repr(__pyx_v_db_cls); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 108, __pyx_L1_error)
4123
+ __pyx_t_11 = PyObject_Repr(__pyx_v_db_cls); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 109, __pyx_L1_error)
4094
4124
  __Pyx_GOTREF(__pyx_t_11);
4095
4125
  __pyx_t_12 = NULL;
4096
4126
  __pyx_t_6 = 0;
@@ -4111,7 +4141,7 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
4111
4141
  __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
4112
4142
  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
4113
4143
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
4114
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 107, __pyx_L1_error)
4144
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error)
4115
4145
  __Pyx_GOTREF(__pyx_t_4);
4116
4146
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
4117
4147
  }
@@ -4134,15 +4164,15 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
4134
4164
  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
4135
4165
  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
4136
4166
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4137
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error)
4167
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error)
4138
4168
  __Pyx_GOTREF(__pyx_t_3);
4139
4169
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
4140
4170
  }
4141
4171
  __Pyx_Raise(__pyx_t_3, 0, 0, 0);
4142
4172
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4143
- __PYX_ERR(0, 105, __pyx_L1_error)
4173
+ __PYX_ERR(0, 106, __pyx_L1_error)
4144
4174
 
4145
- /* "mysqlengine/engine.py":104
4175
+ /* "mysqlengine/engine.py":105
4146
4176
  * for db_cls in dict_values(databases):
4147
4177
  * # . validate database class
4148
4178
  * if type(db_cls) is not type or not issubclass(db_cls, Database): # <<<<<<<<<<<<<<
@@ -4151,7 +4181,7 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
4151
4181
  */
4152
4182
  }
4153
4183
 
4154
- /* "mysqlengine/engine.py":102
4184
+ /* "mysqlengine/engine.py":103
4155
4185
  * "<Engine> The 'databases' argument cannot be empty."
4156
4186
  * )
4157
4187
  * for db_cls in dict_values(databases): # <<<<<<<<<<<<<<
@@ -4161,7 +4191,7 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
4161
4191
  }
4162
4192
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4163
4193
 
4164
- /* "mysqlengine/engine.py":111
4194
+ /* "mysqlengine/engine.py":112
4165
4195
  * )
4166
4196
  * )
4167
4197
  * self._databases_cls = databases # <<<<<<<<<<<<<<
@@ -4174,17 +4204,17 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
4174
4204
  __Pyx_DECREF(__pyx_v_self->_databases_cls);
4175
4205
  __pyx_v_self->_databases_cls = __pyx_v_databases;
4176
4206
 
4177
- /* "mysqlengine/engine.py":112
4207
+ /* "mysqlengine/engine.py":113
4178
4208
  * )
4179
4209
  * self._databases_cls = databases
4180
4210
  * self._length = dict_len(databases) # <<<<<<<<<<<<<<
4181
4211
  *
4182
4212
  * # Access -------------------------------------------------------------------------------------
4183
4213
  */
4184
- __pyx_t_7 = PyDict_Size(__pyx_v_databases); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 112, __pyx_L1_error)
4214
+ __pyx_t_7 = PyDict_Size(__pyx_v_databases); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 113, __pyx_L1_error)
4185
4215
  __pyx_v_self->_length = __pyx_t_7;
4186
4216
 
4187
- /* "mysqlengine/engine.py":94
4217
+ /* "mysqlengine/engine.py":95
4188
4218
  *
4189
4219
  * # Validation ---------------------------------------------------------------------------------
4190
4220
  * @cython.cfunc # <<<<<<<<<<<<<<
@@ -4213,7 +4243,7 @@ static PyObject *__pyx_f_11mysqlengine_6engine_6Engine__validate_databases(struc
4213
4243
  }
4214
4244
  static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
4215
4245
 
4216
- /* "mysqlengine/engine.py":115
4246
+ /* "mysqlengine/engine.py":116
4217
4247
  *
4218
4248
  * # Access -------------------------------------------------------------------------------------
4219
4249
  * async def access(self, db: str, **init_args: Any) -> Database: # <<<<<<<<<<<<<<
@@ -4278,12 +4308,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
4278
4308
  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
4279
4309
  kw_args--;
4280
4310
  }
4281
- else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 115, __pyx_L3_error)
4311
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 116, __pyx_L3_error)
4282
4312
  else goto __pyx_L5_argtuple_error;
4283
4313
  }
4284
4314
  if (unlikely(kw_args > 0)) {
4285
4315
  const Py_ssize_t kwd_pos_args = __pyx_nargs;
4286
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_init_args, values + 0, kwd_pos_args, "access") < 0)) __PYX_ERR(0, 115, __pyx_L3_error)
4316
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_init_args, values + 0, kwd_pos_args, "access") < 0)) __PYX_ERR(0, 116, __pyx_L3_error)
4287
4317
  }
4288
4318
  } else if (unlikely(__pyx_nargs != 1)) {
4289
4319
  goto __pyx_L5_argtuple_error;
@@ -4294,7 +4324,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
4294
4324
  }
4295
4325
  goto __pyx_L6_skip;
4296
4326
  __pyx_L5_argtuple_error:;
4297
- __Pyx_RaiseArgtupleInvalid("access", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 115, __pyx_L3_error)
4327
+ __Pyx_RaiseArgtupleInvalid("access", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 116, __pyx_L3_error)
4298
4328
  __pyx_L6_skip:;
4299
4329
  goto __pyx_L4_argument_unpacking_done;
4300
4330
  __pyx_L3_error:;
@@ -4309,7 +4339,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
4309
4339
  __Pyx_RefNannyFinishContext();
4310
4340
  return NULL;
4311
4341
  __pyx_L4_argument_unpacking_done:;
4312
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_db), (&PyUnicode_Type), 0, "db", 1))) __PYX_ERR(0, 115, __pyx_L1_error)
4342
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_db), (&PyUnicode_Type), 0, "db", 1))) __PYX_ERR(0, 116, __pyx_L1_error)
4313
4343
  __pyx_r = __pyx_pf_11mysqlengine_6engine_6Engine_2access(((struct __pyx_obj_11mysqlengine_6engine_Engine *)__pyx_v_self), __pyx_v_db, __pyx_v_init_args);
4314
4344
 
4315
4345
  /* function exit code */
@@ -4340,7 +4370,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_2access(struct __pyx_obj
4340
4370
  if (unlikely(!__pyx_cur_scope)) {
4341
4371
  __pyx_cur_scope = ((struct __pyx_obj_11mysqlengine_6engine___pyx_scope_struct__access *)Py_None);
4342
4372
  __Pyx_INCREF(Py_None);
4343
- __PYX_ERR(0, 115, __pyx_L1_error)
4373
+ __PYX_ERR(0, 116, __pyx_L1_error)
4344
4374
  } else {
4345
4375
  __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
4346
4376
  }
@@ -4354,7 +4384,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_2access(struct __pyx_obj
4354
4384
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_init_args);
4355
4385
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_init_args);
4356
4386
  {
4357
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_11mysqlengine_6engine_6Engine_4generator, __pyx_codeobj_, (PyObject *) __pyx_cur_scope, __pyx_n_s_access, __pyx_n_s_Engine_access, __pyx_n_s_mysqlengine_engine); if (unlikely(!gen)) __PYX_ERR(0, 115, __pyx_L1_error)
4387
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_11mysqlengine_6engine_6Engine_4generator, __pyx_codeobj_, (PyObject *) __pyx_cur_scope, __pyx_n_s_access, __pyx_n_s_Engine_access, __pyx_n_s_mysqlengine_engine); if (unlikely(!gen)) __PYX_ERR(0, 116, __pyx_L1_error)
4358
4388
  __Pyx_DECREF(__pyx_cur_scope);
4359
4389
  __Pyx_RefNannyFinishContext();
4360
4390
  return (PyObject *) gen;
@@ -4409,30 +4439,30 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4409
4439
  return NULL;
4410
4440
  }
4411
4441
  __pyx_L3_first_run:;
4412
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 115, __pyx_L1_error)
4442
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 116, __pyx_L1_error)
4413
4443
 
4414
- /* "mysqlengine/engine.py":166
4444
+ /* "mysqlengine/engine.py":167
4415
4445
  * """
4416
4446
  * # Generate cache key
4417
4447
  * if init_args: # <<<<<<<<<<<<<<
4418
4448
  * cache_key = db + ":" + utils._hash_sha256(init_args)
4419
4449
  * else:
4420
4450
  */
4421
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_init_args); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 166, __pyx_L1_error)
4451
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_init_args); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 167, __pyx_L1_error)
4422
4452
  if (__pyx_t_1) {
4423
4453
 
4424
- /* "mysqlengine/engine.py":167
4454
+ /* "mysqlengine/engine.py":168
4425
4455
  * # Generate cache key
4426
4456
  * if init_args:
4427
4457
  * cache_key = db + ":" + utils._hash_sha256(init_args) # <<<<<<<<<<<<<<
4428
4458
  * else:
4429
4459
  * cache_key = db
4430
4460
  */
4431
- __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_cur_scope->__pyx_v_db, __pyx_kp_u__2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 167, __pyx_L1_error)
4461
+ __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_cur_scope->__pyx_v_db, __pyx_kp_u__2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error)
4432
4462
  __Pyx_GOTREF(__pyx_t_2);
4433
- __pyx_t_3 = __pyx_f_11mysqlengine_5utils__hash_sha256(__pyx_cur_scope->__pyx_v_init_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
4463
+ __pyx_t_3 = __pyx_f_11mysqlengine_5utils__hash_sha256(__pyx_cur_scope->__pyx_v_init_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error)
4434
4464
  __Pyx_GOTREF(__pyx_t_3);
4435
- __pyx_t_4 = __Pyx_PyUnicode_ConcatInPlaceSafe(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error)
4465
+ __pyx_t_4 = __Pyx_PyUnicode_ConcatInPlaceSafe(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error)
4436
4466
  __Pyx_GOTREF(__pyx_t_4);
4437
4467
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4438
4468
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -4440,7 +4470,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4440
4470
  __pyx_cur_scope->__pyx_v_cache_key = ((PyObject*)__pyx_t_4);
4441
4471
  __pyx_t_4 = 0;
4442
4472
 
4443
- /* "mysqlengine/engine.py":166
4473
+ /* "mysqlengine/engine.py":167
4444
4474
  * """
4445
4475
  * # Generate cache key
4446
4476
  * if init_args: # <<<<<<<<<<<<<<
@@ -4450,7 +4480,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4450
4480
  goto __pyx_L4;
4451
4481
  }
4452
4482
 
4453
- /* "mysqlengine/engine.py":169
4483
+ /* "mysqlengine/engine.py":170
4454
4484
  * cache_key = db + ":" + utils._hash_sha256(init_args)
4455
4485
  * else:
4456
4486
  * cache_key = db # <<<<<<<<<<<<<<
@@ -4464,7 +4494,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4464
4494
  }
4465
4495
  __pyx_L4:;
4466
4496
 
4467
- /* "mysqlengine/engine.py":172
4497
+ /* "mysqlengine/engine.py":173
4468
4498
  *
4469
4499
  * # Access database from cache
4470
4500
  * if dict_contains(self._databases, cache_key): # <<<<<<<<<<<<<<
@@ -4473,12 +4503,12 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4473
4503
  */
4474
4504
  __pyx_t_4 = __pyx_cur_scope->__pyx_v_self->_databases;
4475
4505
  __Pyx_INCREF(__pyx_t_4);
4476
- __pyx_t_5 = PyDict_Contains(__pyx_t_4, __pyx_cur_scope->__pyx_v_cache_key); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 172, __pyx_L1_error)
4506
+ __pyx_t_5 = PyDict_Contains(__pyx_t_4, __pyx_cur_scope->__pyx_v_cache_key); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 173, __pyx_L1_error)
4477
4507
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4478
4508
  __pyx_t_1 = (__pyx_t_5 != 0);
4479
4509
  if (__pyx_t_1) {
4480
4510
 
4481
- /* "mysqlengine/engine.py":173
4511
+ /* "mysqlengine/engine.py":174
4482
4512
  * # Access database from cache
4483
4513
  * if dict_contains(self._databases, cache_key):
4484
4514
  * return self._databases[cache_key] # <<<<<<<<<<<<<<
@@ -4488,15 +4518,15 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4488
4518
  __Pyx_XDECREF(__pyx_r);
4489
4519
  if (unlikely(__pyx_cur_scope->__pyx_v_self->_databases == Py_None)) {
4490
4520
  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
4491
- __PYX_ERR(0, 173, __pyx_L1_error)
4521
+ __PYX_ERR(0, 174, __pyx_L1_error)
4492
4522
  }
4493
- __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_cur_scope->__pyx_v_self->_databases, __pyx_cur_scope->__pyx_v_cache_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 173, __pyx_L1_error)
4523
+ __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_cur_scope->__pyx_v_self->_databases, __pyx_cur_scope->__pyx_v_cache_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 174, __pyx_L1_error)
4494
4524
  __Pyx_GOTREF(__pyx_t_4);
4495
4525
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_4);
4496
4526
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4497
4527
  goto __pyx_L0;
4498
4528
 
4499
- /* "mysqlengine/engine.py":172
4529
+ /* "mysqlengine/engine.py":173
4500
4530
  *
4501
4531
  * # Access database from cache
4502
4532
  * if dict_contains(self._databases, cache_key): # <<<<<<<<<<<<<<
@@ -4505,7 +4535,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4505
4535
  */
4506
4536
  }
4507
4537
 
4508
- /* "mysqlengine/engine.py":176
4538
+ /* "mysqlengine/engine.py":177
4509
4539
  *
4510
4540
  * # Get database class
4511
4541
  * if not dict_contains(self._databases_cls, db): # <<<<<<<<<<<<<<
@@ -4514,36 +4544,36 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4514
4544
  */
4515
4545
  __pyx_t_4 = __pyx_cur_scope->__pyx_v_self->_databases_cls;
4516
4546
  __Pyx_INCREF(__pyx_t_4);
4517
- __pyx_t_5 = PyDict_Contains(__pyx_t_4, __pyx_cur_scope->__pyx_v_db); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 176, __pyx_L1_error)
4547
+ __pyx_t_5 = PyDict_Contains(__pyx_t_4, __pyx_cur_scope->__pyx_v_db); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 177, __pyx_L1_error)
4518
4548
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4519
4549
  __pyx_t_1 = (!(__pyx_t_5 != 0));
4520
4550
  if (unlikely(__pyx_t_1)) {
4521
4551
 
4522
- /* "mysqlengine/engine.py":177
4552
+ /* "mysqlengine/engine.py":178
4523
4553
  * # Get database class
4524
4554
  * if not dict_contains(self._databases_cls, db):
4525
4555
  * raise errors.EngineDatabaseAccessKeyError( # <<<<<<<<<<<<<<
4526
4556
  * "<Engine> The database access name '{}' does not belong to this Engine.\n"
4527
4557
  * "Available access names: {}.".format(db, dict_keys(self._databases_cls))
4528
4558
  */
4529
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_errors); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error)
4559
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_errors); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 178, __pyx_L1_error)
4530
4560
  __Pyx_GOTREF(__pyx_t_3);
4531
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_EngineDatabaseAccessKeyError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error)
4561
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_EngineDatabaseAccessKeyError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error)
4532
4562
  __Pyx_GOTREF(__pyx_t_2);
4533
4563
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4534
4564
 
4535
- /* "mysqlengine/engine.py":179
4565
+ /* "mysqlengine/engine.py":180
4536
4566
  * raise errors.EngineDatabaseAccessKeyError(
4537
4567
  * "<Engine> The database access name '{}' does not belong to this Engine.\n"
4538
4568
  * "Available access names: {}.".format(db, dict_keys(self._databases_cls)) # <<<<<<<<<<<<<<
4539
4569
  * )
4540
4570
  * db_cls = self._databases_cls[db]
4541
4571
  */
4542
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Engine_The_database_access_name, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 179, __pyx_L1_error)
4572
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Engine_The_database_access_name, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 180, __pyx_L1_error)
4543
4573
  __Pyx_GOTREF(__pyx_t_6);
4544
4574
  __pyx_t_7 = __pyx_cur_scope->__pyx_v_self->_databases_cls;
4545
4575
  __Pyx_INCREF(__pyx_t_7);
4546
- __pyx_t_8 = PyDict_Keys(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 179, __pyx_L1_error)
4576
+ __pyx_t_8 = PyDict_Keys(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 180, __pyx_L1_error)
4547
4577
  __Pyx_GOTREF(__pyx_t_8);
4548
4578
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4549
4579
  __pyx_t_7 = NULL;
@@ -4565,7 +4595,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4565
4595
  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
4566
4596
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4567
4597
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
4568
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
4598
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 180, __pyx_L1_error)
4569
4599
  __Pyx_GOTREF(__pyx_t_3);
4570
4600
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4571
4601
  }
@@ -4588,15 +4618,15 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4588
4618
  __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
4589
4619
  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
4590
4620
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4591
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L1_error)
4621
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 178, __pyx_L1_error)
4592
4622
  __Pyx_GOTREF(__pyx_t_4);
4593
4623
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4594
4624
  }
4595
4625
  __Pyx_Raise(__pyx_t_4, 0, 0, 0);
4596
4626
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4597
- __PYX_ERR(0, 177, __pyx_L1_error)
4627
+ __PYX_ERR(0, 178, __pyx_L1_error)
4598
4628
 
4599
- /* "mysqlengine/engine.py":176
4629
+ /* "mysqlengine/engine.py":177
4600
4630
  *
4601
4631
  * # Get database class
4602
4632
  * if not dict_contains(self._databases_cls, db): # <<<<<<<<<<<<<<
@@ -4605,7 +4635,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4605
4635
  */
4606
4636
  }
4607
4637
 
4608
- /* "mysqlengine/engine.py":181
4638
+ /* "mysqlengine/engine.py":182
4609
4639
  * "Available access names: {}.".format(db, dict_keys(self._databases_cls))
4610
4640
  * )
4611
4641
  * db_cls = self._databases_cls[db] # <<<<<<<<<<<<<<
@@ -4614,15 +4644,15 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4614
4644
  */
4615
4645
  if (unlikely(__pyx_cur_scope->__pyx_v_self->_databases_cls == Py_None)) {
4616
4646
  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
4617
- __PYX_ERR(0, 181, __pyx_L1_error)
4647
+ __PYX_ERR(0, 182, __pyx_L1_error)
4618
4648
  }
4619
- __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_cur_scope->__pyx_v_self->_databases_cls, __pyx_cur_scope->__pyx_v_db); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L1_error)
4649
+ __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_cur_scope->__pyx_v_self->_databases_cls, __pyx_cur_scope->__pyx_v_db); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 182, __pyx_L1_error)
4620
4650
  __Pyx_GOTREF(__pyx_t_4);
4621
4651
  __Pyx_GIVEREF(__pyx_t_4);
4622
4652
  __pyx_cur_scope->__pyx_v_db_cls = __pyx_t_4;
4623
4653
  __pyx_t_4 = 0;
4624
4654
 
4625
- /* "mysqlengine/engine.py":184
4655
+ /* "mysqlengine/engine.py":185
4626
4656
  *
4627
4657
  * # Instantiate database
4628
4658
  * dict_setitem(init_args, "server", self._server) # <<<<<<<<<<<<<<
@@ -4631,10 +4661,10 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4631
4661
  */
4632
4662
  __pyx_t_4 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_server);
4633
4663
  __Pyx_INCREF(__pyx_t_4);
4634
- __pyx_t_5 = PyDict_SetItem(__pyx_cur_scope->__pyx_v_init_args, __pyx_n_u_server, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 184, __pyx_L1_error)
4664
+ __pyx_t_5 = PyDict_SetItem(__pyx_cur_scope->__pyx_v_init_args, __pyx_n_u_server, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 185, __pyx_L1_error)
4635
4665
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4636
4666
 
4637
- /* "mysqlengine/engine.py":185
4667
+ /* "mysqlengine/engine.py":186
4638
4668
  * # Instantiate database
4639
4669
  * dict_setitem(init_args, "server", self._server)
4640
4670
  * try: # <<<<<<<<<<<<<<
@@ -4648,23 +4678,23 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4648
4678
  __Pyx_XGOTREF(__pyx_t_11);
4649
4679
  /*try:*/ {
4650
4680
 
4651
- /* "mysqlengine/engine.py":186
4681
+ /* "mysqlengine/engine.py":187
4652
4682
  * dict_setitem(init_args, "server", self._server)
4653
4683
  * try:
4654
4684
  * db_ins = db_cls(**init_args) # <<<<<<<<<<<<<<
4655
4685
  * except errors.MysqlEngineError as err:
4656
4686
  * err.add_note(
4657
4687
  */
4658
- __pyx_t_4 = PyDict_Copy(__pyx_cur_scope->__pyx_v_init_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L7_error)
4688
+ __pyx_t_4 = PyDict_Copy(__pyx_cur_scope->__pyx_v_init_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L7_error)
4659
4689
  __Pyx_GOTREF(__pyx_t_4);
4660
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_db_cls, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L7_error)
4690
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_db_cls, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L7_error)
4661
4691
  __Pyx_GOTREF(__pyx_t_2);
4662
4692
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4663
4693
  __Pyx_GIVEREF(__pyx_t_2);
4664
4694
  __pyx_cur_scope->__pyx_v_db_ins = __pyx_t_2;
4665
4695
  __pyx_t_2 = 0;
4666
4696
 
4667
- /* "mysqlengine/engine.py":185
4697
+ /* "mysqlengine/engine.py":186
4668
4698
  * # Instantiate database
4669
4699
  * dict_setitem(init_args, "server", self._server)
4670
4700
  * try: # <<<<<<<<<<<<<<
@@ -4684,7 +4714,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4684
4714
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4685
4715
  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
4686
4716
 
4687
- /* "mysqlengine/engine.py":187
4717
+ /* "mysqlengine/engine.py":188
4688
4718
  * try:
4689
4719
  * db_ins = db_cls(**init_args)
4690
4720
  * except errors.MysqlEngineError as err: # <<<<<<<<<<<<<<
@@ -4692,9 +4722,9 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4692
4722
  * "-> <Engine> Failed to instantiate database {}.\n"
4693
4723
  */
4694
4724
  __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3);
4695
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L9_except_error)
4725
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 188, __pyx_L9_except_error)
4696
4726
  __Pyx_GOTREF(__pyx_t_6);
4697
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MysqlEngineError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 187, __pyx_L9_except_error)
4727
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MysqlEngineError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 188, __pyx_L9_except_error)
4698
4728
  __Pyx_GOTREF(__pyx_t_8);
4699
4729
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4700
4730
  __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_8);
@@ -4703,7 +4733,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4703
4733
  __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
4704
4734
  if (__pyx_t_5) {
4705
4735
  __Pyx_AddTraceback("mysqlengine.engine.Engine.access", __pyx_clineno, __pyx_lineno, __pyx_filename);
4706
- if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 187, __pyx_L9_except_error)
4736
+ if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 188, __pyx_L9_except_error)
4707
4737
  __Pyx_XGOTREF(__pyx_t_3);
4708
4738
  __Pyx_XGOTREF(__pyx_t_4);
4709
4739
  __Pyx_XGOTREF(__pyx_t_2);
@@ -4712,24 +4742,24 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4712
4742
  __pyx_cur_scope->__pyx_v_err = __pyx_t_4;
4713
4743
  /*try:*/ {
4714
4744
 
4715
- /* "mysqlengine/engine.py":188
4745
+ /* "mysqlengine/engine.py":189
4716
4746
  * db_ins = db_cls(**init_args)
4717
4747
  * except errors.MysqlEngineError as err:
4718
4748
  * err.add_note( # <<<<<<<<<<<<<<
4719
4749
  * "-> <Engine> Failed to instantiate database {}.\n"
4720
4750
  * "Initiate arguments: {}".format(db_cls, init_args)
4721
4751
  */
4722
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_err, __pyx_n_s_add_note); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 188, __pyx_L18_error)
4752
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_err, __pyx_n_s_add_note); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 189, __pyx_L18_error)
4723
4753
  __Pyx_GOTREF(__pyx_t_6);
4724
4754
 
4725
- /* "mysqlengine/engine.py":190
4755
+ /* "mysqlengine/engine.py":191
4726
4756
  * err.add_note(
4727
4757
  * "-> <Engine> Failed to instantiate database {}.\n"
4728
4758
  * "Initiate arguments: {}".format(db_cls, init_args) # <<<<<<<<<<<<<<
4729
4759
  * )
4730
4760
  * raise err
4731
4761
  */
4732
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Engine_Failed_to_instantiate_da, __pyx_n_s_format); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 190, __pyx_L18_error)
4762
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Engine_Failed_to_instantiate_da, __pyx_n_s_format); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 191, __pyx_L18_error)
4733
4763
  __Pyx_GOTREF(__pyx_t_12);
4734
4764
  __pyx_t_13 = NULL;
4735
4765
  __pyx_t_5 = 0;
@@ -4749,7 +4779,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4749
4779
  PyObject *__pyx_callargs[3] = {__pyx_t_13, __pyx_cur_scope->__pyx_v_db_cls, __pyx_cur_scope->__pyx_v_init_args};
4750
4780
  __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
4751
4781
  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
4752
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 190, __pyx_L18_error)
4782
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 191, __pyx_L18_error)
4753
4783
  __Pyx_GOTREF(__pyx_t_7);
4754
4784
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
4755
4785
  }
@@ -4772,13 +4802,13 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4772
4802
  __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
4773
4803
  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
4774
4804
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4775
- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 188, __pyx_L18_error)
4805
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 189, __pyx_L18_error)
4776
4806
  __Pyx_GOTREF(__pyx_t_8);
4777
4807
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4778
4808
  }
4779
4809
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
4780
4810
 
4781
- /* "mysqlengine/engine.py":192
4811
+ /* "mysqlengine/engine.py":193
4782
4812
  * "Initiate arguments: {}".format(db_cls, init_args)
4783
4813
  * )
4784
4814
  * raise err # <<<<<<<<<<<<<<
@@ -4786,10 +4816,10 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4786
4816
  * raise errors.EngineDatabaseInstanciateError(
4787
4817
  */
4788
4818
  __Pyx_Raise(__pyx_cur_scope->__pyx_v_err, 0, 0, 0);
4789
- __PYX_ERR(0, 192, __pyx_L18_error)
4819
+ __PYX_ERR(0, 193, __pyx_L18_error)
4790
4820
  }
4791
4821
 
4792
- /* "mysqlengine/engine.py":187
4822
+ /* "mysqlengine/engine.py":188
4793
4823
  * try:
4794
4824
  * db_ins = db_cls(**init_args)
4795
4825
  * except errors.MysqlEngineError as err: # <<<<<<<<<<<<<<
@@ -4836,7 +4866,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4836
4866
  }
4837
4867
  }
4838
4868
 
4839
- /* "mysqlengine/engine.py":193
4869
+ /* "mysqlengine/engine.py":194
4840
4870
  * )
4841
4871
  * raise err
4842
4872
  * except Exception as err: # <<<<<<<<<<<<<<
@@ -4846,7 +4876,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4846
4876
  __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
4847
4877
  if (__pyx_t_14) {
4848
4878
  __Pyx_AddTraceback("mysqlengine.engine.Engine.access", __pyx_clineno, __pyx_lineno, __pyx_filename);
4849
- if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 193, __pyx_L9_except_error)
4879
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 194, __pyx_L9_except_error)
4850
4880
  __Pyx_XGOTREF(__pyx_t_2);
4851
4881
  __Pyx_XGOTREF(__pyx_t_4);
4852
4882
  __Pyx_XGOTREF(__pyx_t_3);
@@ -4855,27 +4885,27 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4855
4885
  __pyx_cur_scope->__pyx_v_err = __pyx_t_4;
4856
4886
  /*try:*/ {
4857
4887
 
4858
- /* "mysqlengine/engine.py":194
4888
+ /* "mysqlengine/engine.py":195
4859
4889
  * raise err
4860
4890
  * except Exception as err:
4861
4891
  * raise errors.EngineDatabaseInstanciateError( # <<<<<<<<<<<<<<
4862
4892
  * "<Engine> Failed to instantiate database {}.\n"
4863
4893
  * "Initiate arguments: {}.\nError: {}".format(db_cls, init_args, err)
4864
4894
  */
4865
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 194, __pyx_L29_error)
4895
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 195, __pyx_L29_error)
4866
4896
  __Pyx_GOTREF(__pyx_t_6);
4867
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_EngineDatabaseInstanciateError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 194, __pyx_L29_error)
4897
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_EngineDatabaseInstanciateError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 195, __pyx_L29_error)
4868
4898
  __Pyx_GOTREF(__pyx_t_7);
4869
4899
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4870
4900
 
4871
- /* "mysqlengine/engine.py":196
4901
+ /* "mysqlengine/engine.py":197
4872
4902
  * raise errors.EngineDatabaseInstanciateError(
4873
4903
  * "<Engine> Failed to instantiate database {}.\n"
4874
4904
  * "Initiate arguments: {}.\nError: {}".format(db_cls, init_args, err) # <<<<<<<<<<<<<<
4875
4905
  * ) from err
4876
4906
  *
4877
4907
  */
4878
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Engine_Failed_to_instantiate_da_2, __pyx_n_s_format); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 196, __pyx_L29_error)
4908
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Engine_Failed_to_instantiate_da_2, __pyx_n_s_format); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 197, __pyx_L29_error)
4879
4909
  __Pyx_GOTREF(__pyx_t_12);
4880
4910
  __pyx_t_13 = NULL;
4881
4911
  __pyx_t_14 = 0;
@@ -4895,7 +4925,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4895
4925
  PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_cur_scope->__pyx_v_db_cls, __pyx_cur_scope->__pyx_v_init_args, __pyx_cur_scope->__pyx_v_err};
4896
4926
  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
4897
4927
  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
4898
- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 196, __pyx_L29_error)
4928
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 197, __pyx_L29_error)
4899
4929
  __Pyx_GOTREF(__pyx_t_6);
4900
4930
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
4901
4931
  }
@@ -4918,12 +4948,12 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4918
4948
  __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 1+__pyx_t_14);
4919
4949
  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
4920
4950
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4921
- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 194, __pyx_L29_error)
4951
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 195, __pyx_L29_error)
4922
4952
  __Pyx_GOTREF(__pyx_t_8);
4923
4953
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4924
4954
  }
4925
4955
 
4926
- /* "mysqlengine/engine.py":197
4956
+ /* "mysqlengine/engine.py":198
4927
4957
  * "<Engine> Failed to instantiate database {}.\n"
4928
4958
  * "Initiate arguments: {}.\nError: {}".format(db_cls, init_args, err)
4929
4959
  * ) from err # <<<<<<<<<<<<<<
@@ -4932,10 +4962,10 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4932
4962
  */
4933
4963
  __Pyx_Raise(__pyx_t_8, 0, 0, __pyx_cur_scope->__pyx_v_err);
4934
4964
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
4935
- __PYX_ERR(0, 194, __pyx_L29_error)
4965
+ __PYX_ERR(0, 195, __pyx_L29_error)
4936
4966
  }
4937
4967
 
4938
- /* "mysqlengine/engine.py":193
4968
+ /* "mysqlengine/engine.py":194
4939
4969
  * )
4940
4970
  * raise err
4941
4971
  * except Exception as err: # <<<<<<<<<<<<<<
@@ -4983,7 +5013,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4983
5013
  }
4984
5014
  goto __pyx_L9_except_error;
4985
5015
 
4986
- /* "mysqlengine/engine.py":185
5016
+ /* "mysqlengine/engine.py":186
4987
5017
  * # Instantiate database
4988
5018
  * dict_setitem(init_args, "server", self._server)
4989
5019
  * try: # <<<<<<<<<<<<<<
@@ -4999,14 +5029,14 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
4999
5029
  __pyx_L12_try_end:;
5000
5030
  }
5001
5031
 
5002
- /* "mysqlengine/engine.py":200
5032
+ /* "mysqlengine/engine.py":201
5003
5033
  *
5004
5034
  * # Initiate & cache database
5005
5035
  * await db_ins.initiate() # <<<<<<<<<<<<<<
5006
5036
  * dict_setitem(self._databases, cache_key, db_ins)
5007
5037
  *
5008
5038
  */
5009
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_db_ins, __pyx_n_s_initiate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error)
5039
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_db_ins, __pyx_n_s_initiate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 201, __pyx_L1_error)
5010
5040
  __Pyx_GOTREF(__pyx_t_4);
5011
5041
  __pyx_t_2 = NULL;
5012
5042
  __pyx_t_5 = 0;
@@ -5026,7 +5056,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
5026
5056
  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
5027
5057
  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
5028
5058
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
5029
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
5059
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error)
5030
5060
  __Pyx_GOTREF(__pyx_t_3);
5031
5061
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5032
5062
  }
@@ -5041,16 +5071,16 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
5041
5071
  __pyx_generator->resume_label = 1;
5042
5072
  return __pyx_r;
5043
5073
  __pyx_L35_resume_from_await:;
5044
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 200, __pyx_L1_error)
5074
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 201, __pyx_L1_error)
5045
5075
  } else {
5046
5076
  PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
5047
5077
  if (exc_type) {
5048
5078
  if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
5049
- else __PYX_ERR(0, 200, __pyx_L1_error)
5079
+ else __PYX_ERR(0, 201, __pyx_L1_error)
5050
5080
  }
5051
5081
  }
5052
5082
 
5053
- /* "mysqlengine/engine.py":201
5083
+ /* "mysqlengine/engine.py":202
5054
5084
  * # Initiate & cache database
5055
5085
  * await db_ins.initiate()
5056
5086
  * dict_setitem(self._databases, cache_key, db_ins) # <<<<<<<<<<<<<<
@@ -5059,10 +5089,10 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
5059
5089
  */
5060
5090
  __pyx_t_3 = __pyx_cur_scope->__pyx_v_self->_databases;
5061
5091
  __Pyx_INCREF(__pyx_t_3);
5062
- __pyx_t_5 = PyDict_SetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_cache_key, __pyx_cur_scope->__pyx_v_db_ins); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 201, __pyx_L1_error)
5092
+ __pyx_t_5 = PyDict_SetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_cache_key, __pyx_cur_scope->__pyx_v_db_ins); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 202, __pyx_L1_error)
5063
5093
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5064
5094
 
5065
- /* "mysqlengine/engine.py":204
5095
+ /* "mysqlengine/engine.py":205
5066
5096
  *
5067
5097
  * # Return database
5068
5098
  * return db_ins # <<<<<<<<<<<<<<
@@ -5074,7 +5104,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
5074
5104
  goto __pyx_L0;
5075
5105
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
5076
5106
 
5077
- /* "mysqlengine/engine.py":115
5107
+ /* "mysqlengine/engine.py":116
5078
5108
  *
5079
5109
  * # Access -------------------------------------------------------------------------------------
5080
5110
  * async def access(self, db: str, **init_args: Any) -> Database: # <<<<<<<<<<<<<<
@@ -5106,7 +5136,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_4generator(__pyx_Corouti
5106
5136
  }
5107
5137
  static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_7generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
5108
5138
 
5109
- /* "mysqlengine/engine.py":207
5139
+ /* "mysqlengine/engine.py":208
5110
5140
  *
5111
5141
  * # Disconnect ---------------------------------------------------------------------------------
5112
5142
  * async def disconnect(self, countdown: Union[int, None] = None) -> None: # <<<<<<<<<<<<<<
@@ -5168,12 +5198,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
5168
5198
  if (kw_args > 0) {
5169
5199
  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_countdown);
5170
5200
  if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
5171
- else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 207, __pyx_L3_error)
5201
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 208, __pyx_L3_error)
5172
5202
  }
5173
5203
  }
5174
5204
  if (unlikely(kw_args > 0)) {
5175
5205
  const Py_ssize_t kwd_pos_args = __pyx_nargs;
5176
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "disconnect") < 0)) __PYX_ERR(0, 207, __pyx_L3_error)
5206
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "disconnect") < 0)) __PYX_ERR(0, 208, __pyx_L3_error)
5177
5207
  }
5178
5208
  } else {
5179
5209
  switch (__pyx_nargs) {
@@ -5187,7 +5217,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
5187
5217
  }
5188
5218
  goto __pyx_L6_skip;
5189
5219
  __pyx_L5_argtuple_error:;
5190
- __Pyx_RaiseArgtupleInvalid("disconnect", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 207, __pyx_L3_error)
5220
+ __Pyx_RaiseArgtupleInvalid("disconnect", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 208, __pyx_L3_error)
5191
5221
  __pyx_L6_skip:;
5192
5222
  goto __pyx_L4_argument_unpacking_done;
5193
5223
  __pyx_L3_error:;
@@ -5226,7 +5256,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_5disconnect(struct __pyx
5226
5256
  if (unlikely(!__pyx_cur_scope)) {
5227
5257
  __pyx_cur_scope = ((struct __pyx_obj_11mysqlengine_6engine___pyx_scope_struct_1_disconnect *)Py_None);
5228
5258
  __Pyx_INCREF(Py_None);
5229
- __PYX_ERR(0, 207, __pyx_L1_error)
5259
+ __PYX_ERR(0, 208, __pyx_L1_error)
5230
5260
  } else {
5231
5261
  __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
5232
5262
  }
@@ -5237,7 +5267,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_5disconnect(struct __pyx
5237
5267
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_countdown);
5238
5268
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_countdown);
5239
5269
  {
5240
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_11mysqlengine_6engine_6Engine_7generator1, __pyx_codeobj__3, (PyObject *) __pyx_cur_scope, __pyx_n_s_disconnect, __pyx_n_s_Engine_disconnect, __pyx_n_s_mysqlengine_engine); if (unlikely(!gen)) __PYX_ERR(0, 207, __pyx_L1_error)
5270
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_11mysqlengine_6engine_6Engine_7generator1, __pyx_codeobj__3, (PyObject *) __pyx_cur_scope, __pyx_n_s_disconnect, __pyx_n_s_Engine_disconnect, __pyx_n_s_mysqlengine_engine); if (unlikely(!gen)) __PYX_ERR(0, 208, __pyx_L1_error)
5241
5271
  __Pyx_DECREF(__pyx_cur_scope);
5242
5272
  __Pyx_RefNannyFinishContext();
5243
5273
  return (PyObject *) gen;
@@ -5274,16 +5304,16 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_7generator1(__pyx_Corout
5274
5304
  return NULL;
5275
5305
  }
5276
5306
  __pyx_L3_first_run:;
5277
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 207, __pyx_L1_error)
5307
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 208, __pyx_L1_error)
5278
5308
 
5279
- /* "mysqlengine/engine.py":225
5309
+ /* "mysqlengine/engine.py":226
5280
5310
  * connections (regardless state) after the countdown.
5281
5311
  * """
5282
5312
  * await self._server.close(countdown) # <<<<<<<<<<<<<<
5283
5313
  * self._databases = {}
5284
5314
  *
5285
5315
  */
5286
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_server), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 225, __pyx_L1_error)
5316
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_server), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 226, __pyx_L1_error)
5287
5317
  __Pyx_GOTREF(__pyx_t_2);
5288
5318
  __pyx_t_3 = NULL;
5289
5319
  __pyx_t_4 = 0;
@@ -5303,7 +5333,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_7generator1(__pyx_Corout
5303
5333
  PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_countdown};
5304
5334
  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
5305
5335
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5306
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L1_error)
5336
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
5307
5337
  __Pyx_GOTREF(__pyx_t_1);
5308
5338
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5309
5339
  }
@@ -5318,23 +5348,23 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_7generator1(__pyx_Corout
5318
5348
  __pyx_generator->resume_label = 1;
5319
5349
  return __pyx_r;
5320
5350
  __pyx_L4_resume_from_await:;
5321
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 225, __pyx_L1_error)
5351
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 226, __pyx_L1_error)
5322
5352
  } else {
5323
5353
  PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
5324
5354
  if (exc_type) {
5325
5355
  if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
5326
- else __PYX_ERR(0, 225, __pyx_L1_error)
5356
+ else __PYX_ERR(0, 226, __pyx_L1_error)
5327
5357
  }
5328
5358
  }
5329
5359
 
5330
- /* "mysqlengine/engine.py":226
5360
+ /* "mysqlengine/engine.py":227
5331
5361
  * """
5332
5362
  * await self._server.close(countdown)
5333
5363
  * self._databases = {} # <<<<<<<<<<<<<<
5334
5364
  *
5335
5365
  * # Speical Methods -----------------------------------------------------
5336
5366
  */
5337
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
5367
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error)
5338
5368
  __Pyx_GOTREF(__pyx_t_1);
5339
5369
  __Pyx_GIVEREF(__pyx_t_1);
5340
5370
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->_databases);
@@ -5343,7 +5373,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_7generator1(__pyx_Corout
5343
5373
  __pyx_t_1 = 0;
5344
5374
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
5345
5375
 
5346
- /* "mysqlengine/engine.py":207
5376
+ /* "mysqlengine/engine.py":208
5347
5377
  *
5348
5378
  * # Disconnect ---------------------------------------------------------------------------------
5349
5379
  * async def disconnect(self, countdown: Union[int, None] = None) -> None: # <<<<<<<<<<<<<<
@@ -5371,7 +5401,7 @@ static PyObject *__pyx_gb_11mysqlengine_6engine_6Engine_7generator1(__pyx_Corout
5371
5401
  return __pyx_r;
5372
5402
  }
5373
5403
 
5374
- /* "mysqlengine/engine.py":229
5404
+ /* "mysqlengine/engine.py":230
5375
5405
  *
5376
5406
  * # Speical Methods -----------------------------------------------------
5377
5407
  * def __repr__(self) -> str: # <<<<<<<<<<<<<<
@@ -5403,7 +5433,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_8__repr__(struct __pyx_o
5403
5433
  int __pyx_clineno = 0;
5404
5434
  __Pyx_RefNannySetupContext("__repr__", 1);
5405
5435
 
5406
- /* "mysqlengine/engine.py":230
5436
+ /* "mysqlengine/engine.py":231
5407
5437
  * # Speical Methods -----------------------------------------------------
5408
5438
  * def __repr__(self) -> str:
5409
5439
  * return "<Engine (databases=%s)>" % self._databases_cls # <<<<<<<<<<<<<<
@@ -5411,13 +5441,13 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_8__repr__(struct __pyx_o
5411
5441
  * def __hash__(self) -> int:
5412
5442
  */
5413
5443
  __Pyx_XDECREF(__pyx_r);
5414
- __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_Engine_databases_s, __pyx_v_self->_databases_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error)
5444
+ __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_Engine_databases_s, __pyx_v_self->_databases_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
5415
5445
  __Pyx_GOTREF(__pyx_t_1);
5416
5446
  __pyx_r = __pyx_t_1;
5417
5447
  __pyx_t_1 = 0;
5418
5448
  goto __pyx_L0;
5419
5449
 
5420
- /* "mysqlengine/engine.py":229
5450
+ /* "mysqlengine/engine.py":230
5421
5451
  *
5422
5452
  * # Speical Methods -----------------------------------------------------
5423
5453
  * def __repr__(self) -> str: # <<<<<<<<<<<<<<
@@ -5436,7 +5466,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_8__repr__(struct __pyx_o
5436
5466
  return __pyx_r;
5437
5467
  }
5438
5468
 
5439
- /* "mysqlengine/engine.py":232
5469
+ /* "mysqlengine/engine.py":233
5440
5470
  * return "<Engine (databases=%s)>" % self._databases_cls
5441
5471
  *
5442
5472
  * def __hash__(self) -> int: # <<<<<<<<<<<<<<
@@ -5469,27 +5499,27 @@ static Py_hash_t __pyx_pf_11mysqlengine_6engine_6Engine_10__hash__(struct __pyx_
5469
5499
  int __pyx_clineno = 0;
5470
5500
  __Pyx_RefNannySetupContext("__hash__", 1);
5471
5501
 
5472
- /* "mysqlengine/engine.py":233
5502
+ /* "mysqlengine/engine.py":234
5473
5503
  *
5474
5504
  * def __hash__(self) -> int:
5475
5505
  * return hash((self._server, self._databases_cls)) # <<<<<<<<<<<<<<
5476
5506
  *
5477
5507
  * def __eq__(self, __o: object) -> bool:
5478
5508
  */
5479
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error)
5509
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L1_error)
5480
5510
  __Pyx_GOTREF(__pyx_t_1);
5481
5511
  __Pyx_INCREF((PyObject *)__pyx_v_self->_server);
5482
5512
  __Pyx_GIVEREF((PyObject *)__pyx_v_self->_server);
5483
- if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->_server))) __PYX_ERR(0, 233, __pyx_L1_error);
5513
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->_server))) __PYX_ERR(0, 234, __pyx_L1_error);
5484
5514
  __Pyx_INCREF(__pyx_v_self->_databases_cls);
5485
5515
  __Pyx_GIVEREF(__pyx_v_self->_databases_cls);
5486
- if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->_databases_cls)) __PYX_ERR(0, 233, __pyx_L1_error);
5487
- __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 233, __pyx_L1_error)
5516
+ if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->_databases_cls)) __PYX_ERR(0, 234, __pyx_L1_error);
5517
+ __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 234, __pyx_L1_error)
5488
5518
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5489
5519
  __pyx_r = __pyx_t_2;
5490
5520
  goto __pyx_L0;
5491
5521
 
5492
- /* "mysqlengine/engine.py":232
5522
+ /* "mysqlengine/engine.py":233
5493
5523
  * return "<Engine (databases=%s)>" % self._databases_cls
5494
5524
  *
5495
5525
  * def __hash__(self) -> int: # <<<<<<<<<<<<<<
@@ -5508,7 +5538,7 @@ static Py_hash_t __pyx_pf_11mysqlengine_6engine_6Engine_10__hash__(struct __pyx_
5508
5538
  return __pyx_r;
5509
5539
  }
5510
5540
 
5511
- /* "mysqlengine/engine.py":235
5541
+ /* "mysqlengine/engine.py":236
5512
5542
  * return hash((self._server, self._databases_cls))
5513
5543
  *
5514
5544
  * def __eq__(self, __o: object) -> bool: # <<<<<<<<<<<<<<
@@ -5544,7 +5574,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_12__eq__(struct __pyx_ob
5544
5574
  int __pyx_clineno = 0;
5545
5575
  __Pyx_RefNannySetupContext("__eq__", 1);
5546
5576
 
5547
- /* "mysqlengine/engine.py":236
5577
+ /* "mysqlengine/engine.py":237
5548
5578
  *
5549
5579
  * def __eq__(self, __o: object) -> bool:
5550
5580
  * return hash(self) == hash(__o) if isinstance(__o, type(self)) else False # <<<<<<<<<<<<<<
@@ -5552,11 +5582,11 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_12__eq__(struct __pyx_ob
5552
5582
  * def __len__(self) -> int:
5553
5583
  */
5554
5584
  __Pyx_XDECREF(__pyx_r);
5555
- __pyx_t_2 = PyObject_IsInstance(__pyx_v__Engine__o, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 236, __pyx_L1_error)
5585
+ __pyx_t_2 = PyObject_IsInstance(__pyx_v__Engine__o, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 237, __pyx_L1_error)
5556
5586
  if (__pyx_t_2) {
5557
- __pyx_t_3 = PyObject_Hash(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 236, __pyx_L1_error)
5558
- __pyx_t_4 = PyObject_Hash(__pyx_v__Engine__o); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 236, __pyx_L1_error)
5559
- __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_t_3 == __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 236, __pyx_L1_error)
5587
+ __pyx_t_3 = PyObject_Hash(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 237, __pyx_L1_error)
5588
+ __pyx_t_4 = PyObject_Hash(__pyx_v__Engine__o); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 237, __pyx_L1_error)
5589
+ __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_t_3 == __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 237, __pyx_L1_error)
5560
5590
  __Pyx_GOTREF(__pyx_t_5);
5561
5591
  __pyx_t_1 = __pyx_t_5;
5562
5592
  __pyx_t_5 = 0;
@@ -5568,7 +5598,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_12__eq__(struct __pyx_ob
5568
5598
  __pyx_t_1 = 0;
5569
5599
  goto __pyx_L0;
5570
5600
 
5571
- /* "mysqlengine/engine.py":235
5601
+ /* "mysqlengine/engine.py":236
5572
5602
  * return hash((self._server, self._databases_cls))
5573
5603
  *
5574
5604
  * def __eq__(self, __o: object) -> bool: # <<<<<<<<<<<<<<
@@ -5588,7 +5618,7 @@ static PyObject *__pyx_pf_11mysqlengine_6engine_6Engine_12__eq__(struct __pyx_ob
5588
5618
  return __pyx_r;
5589
5619
  }
5590
5620
 
5591
- /* "mysqlengine/engine.py":238
5621
+ /* "mysqlengine/engine.py":239
5592
5622
  * return hash(self) == hash(__o) if isinstance(__o, type(self)) else False
5593
5623
  *
5594
5624
  * def __len__(self) -> int: # <<<<<<<<<<<<<<
@@ -5614,7 +5644,7 @@ static Py_ssize_t __pyx_pw_11mysqlengine_6engine_6Engine_15__len__(PyObject *__p
5614
5644
  static Py_ssize_t __pyx_pf_11mysqlengine_6engine_6Engine_14__len__(struct __pyx_obj_11mysqlengine_6engine_Engine *__pyx_v_self) {
5615
5645
  Py_ssize_t __pyx_r;
5616
5646
 
5617
- /* "mysqlengine/engine.py":239
5647
+ /* "mysqlengine/engine.py":240
5618
5648
  *
5619
5649
  * def __len__(self) -> int:
5620
5650
  * return self._length # <<<<<<<<<<<<<<
@@ -5624,7 +5654,7 @@ static Py_ssize_t __pyx_pf_11mysqlengine_6engine_6Engine_14__len__(struct __pyx_
5624
5654
  __pyx_r = __pyx_v_self->_length;
5625
5655
  goto __pyx_L0;
5626
5656
 
5627
- /* "mysqlengine/engine.py":238
5657
+ /* "mysqlengine/engine.py":239
5628
5658
  * return hash(self) == hash(__o) if isinstance(__o, type(self)) else False
5629
5659
  *
5630
5660
  * def __len__(self) -> int: # <<<<<<<<<<<<<<
@@ -5637,12 +5667,12 @@ static Py_ssize_t __pyx_pf_11mysqlengine_6engine_6Engine_14__len__(struct __pyx_
5637
5667
  return __pyx_r;
5638
5668
  }
5639
5669
 
5640
- /* "mysqlengine/engine.py":241
5670
+ /* "mysqlengine/engine.py":242
5641
5671
  * return self._length
5642
5672
  *
5643
5673
  * def __del__(self): # <<<<<<<<<<<<<<
5644
- * self._server = None
5645
- * self._databases_cls = None
5674
+ * if not self._server._closed:
5675
+ * logger.error(
5646
5676
  */
5647
5677
 
5648
5678
  /* Python wrapper */
@@ -5660,11 +5690,119 @@ static void __pyx_pw_11mysqlengine_6engine_6Engine_17__del__(PyObject *__pyx_v_s
5660
5690
 
5661
5691
  static void __pyx_pf_11mysqlengine_6engine_6Engine_16__del__(struct __pyx_obj_11mysqlengine_6engine_Engine *__pyx_v_self) {
5662
5692
  __Pyx_RefNannyDeclarations
5693
+ int __pyx_t_1;
5694
+ PyObject *__pyx_t_2 = NULL;
5695
+ PyObject *__pyx_t_3 = NULL;
5696
+ PyObject *__pyx_t_4 = NULL;
5697
+ PyObject *__pyx_t_5 = NULL;
5698
+ int __pyx_t_6;
5699
+ int __pyx_lineno = 0;
5700
+ const char *__pyx_filename = NULL;
5701
+ int __pyx_clineno = 0;
5663
5702
  __Pyx_RefNannySetupContext("__del__", 1);
5664
5703
 
5665
- /* "mysqlengine/engine.py":242
5704
+ /* "mysqlengine/engine.py":243
5666
5705
  *
5667
5706
  * def __del__(self):
5707
+ * if not self._server._closed: # <<<<<<<<<<<<<<
5708
+ * logger.error(
5709
+ * "%s is not closed properly. Please call `disconnect()` "
5710
+ */
5711
+ __pyx_t_1 = (!__pyx_v_self->_server->__pyx_base._closed);
5712
+ if (__pyx_t_1) {
5713
+
5714
+ /* "mysqlengine/engine.py":244
5715
+ * def __del__(self):
5716
+ * if not self._server._closed:
5717
+ * logger.error( # <<<<<<<<<<<<<<
5718
+ * "%s is not closed properly. Please call `disconnect()` "
5719
+ * "to gracefully shutdown the Engine." % self
5720
+ */
5721
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 244, __pyx_L1_error)
5722
+ __Pyx_GOTREF(__pyx_t_3);
5723
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error)
5724
+ __Pyx_GOTREF(__pyx_t_4);
5725
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5726
+
5727
+ /* "mysqlengine/engine.py":246
5728
+ * logger.error(
5729
+ * "%s is not closed properly. Please call `disconnect()` "
5730
+ * "to gracefully shutdown the Engine." % self # <<<<<<<<<<<<<<
5731
+ * )
5732
+ * self._server._encure_closed()
5733
+ */
5734
+ __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_is_not_closed_properly_Please, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error)
5735
+ __Pyx_GOTREF(__pyx_t_3);
5736
+ __pyx_t_5 = NULL;
5737
+ __pyx_t_6 = 0;
5738
+ #if CYTHON_UNPACK_METHODS
5739
+ if (unlikely(PyMethod_Check(__pyx_t_4))) {
5740
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
5741
+ if (likely(__pyx_t_5)) {
5742
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
5743
+ __Pyx_INCREF(__pyx_t_5);
5744
+ __Pyx_INCREF(function);
5745
+ __Pyx_DECREF_SET(__pyx_t_4, function);
5746
+ __pyx_t_6 = 1;
5747
+ }
5748
+ }
5749
+ #endif
5750
+ {
5751
+ PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
5752
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
5753
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5754
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5755
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 244, __pyx_L1_error)
5756
+ __Pyx_GOTREF(__pyx_t_2);
5757
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5758
+ }
5759
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5760
+
5761
+ /* "mysqlengine/engine.py":248
5762
+ * "to gracefully shutdown the Engine." % self
5763
+ * )
5764
+ * self._server._encure_closed() # <<<<<<<<<<<<<<
5765
+ * self._server = None
5766
+ * self._databases_cls = None
5767
+ */
5768
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_server), __pyx_n_s_encure_closed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 248, __pyx_L1_error)
5769
+ __Pyx_GOTREF(__pyx_t_4);
5770
+ __pyx_t_3 = NULL;
5771
+ __pyx_t_6 = 0;
5772
+ #if CYTHON_UNPACK_METHODS
5773
+ if (likely(PyMethod_Check(__pyx_t_4))) {
5774
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
5775
+ if (likely(__pyx_t_3)) {
5776
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
5777
+ __Pyx_INCREF(__pyx_t_3);
5778
+ __Pyx_INCREF(function);
5779
+ __Pyx_DECREF_SET(__pyx_t_4, function);
5780
+ __pyx_t_6 = 1;
5781
+ }
5782
+ }
5783
+ #endif
5784
+ {
5785
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
5786
+ __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
5787
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5788
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 248, __pyx_L1_error)
5789
+ __Pyx_GOTREF(__pyx_t_2);
5790
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5791
+ }
5792
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5793
+
5794
+ /* "mysqlengine/engine.py":243
5795
+ *
5796
+ * def __del__(self):
5797
+ * if not self._server._closed: # <<<<<<<<<<<<<<
5798
+ * logger.error(
5799
+ * "%s is not closed properly. Please call `disconnect()` "
5800
+ */
5801
+ }
5802
+
5803
+ /* "mysqlengine/engine.py":249
5804
+ * )
5805
+ * self._server._encure_closed()
5668
5806
  * self._server = None # <<<<<<<<<<<<<<
5669
5807
  * self._databases_cls = None
5670
5808
  * self._databases = None
@@ -5675,8 +5813,8 @@ static void __pyx_pf_11mysqlengine_6engine_6Engine_16__del__(struct __pyx_obj_11
5675
5813
  __Pyx_DECREF((PyObject *)__pyx_v_self->_server);
5676
5814
  __pyx_v_self->_server = ((struct __pyx_obj_11mysqlengine_10connection_Server *)Py_None);
5677
5815
 
5678
- /* "mysqlengine/engine.py":243
5679
- * def __del__(self):
5816
+ /* "mysqlengine/engine.py":250
5817
+ * self._server._encure_closed()
5680
5818
  * self._server = None
5681
5819
  * self._databases_cls = None # <<<<<<<<<<<<<<
5682
5820
  * self._databases = None
@@ -5687,7 +5825,7 @@ static void __pyx_pf_11mysqlengine_6engine_6Engine_16__del__(struct __pyx_obj_11
5687
5825
  __Pyx_DECREF(__pyx_v_self->_databases_cls);
5688
5826
  __pyx_v_self->_databases_cls = ((PyObject*)Py_None);
5689
5827
 
5690
- /* "mysqlengine/engine.py":244
5828
+ /* "mysqlengine/engine.py":251
5691
5829
  * self._server = None
5692
5830
  * self._databases_cls = None
5693
5831
  * self._databases = None # <<<<<<<<<<<<<<
@@ -5698,15 +5836,23 @@ static void __pyx_pf_11mysqlengine_6engine_6Engine_16__del__(struct __pyx_obj_11
5698
5836
  __Pyx_DECREF(__pyx_v_self->_databases);
5699
5837
  __pyx_v_self->_databases = ((PyObject*)Py_None);
5700
5838
 
5701
- /* "mysqlengine/engine.py":241
5839
+ /* "mysqlengine/engine.py":242
5702
5840
  * return self._length
5703
5841
  *
5704
5842
  * def __del__(self): # <<<<<<<<<<<<<<
5705
- * self._server = None
5706
- * self._databases_cls = None
5843
+ * if not self._server._closed:
5844
+ * logger.error(
5707
5845
  */
5708
5846
 
5709
5847
  /* function exit code */
5848
+ goto __pyx_L0;
5849
+ __pyx_L1_error:;
5850
+ __Pyx_XDECREF(__pyx_t_2);
5851
+ __Pyx_XDECREF(__pyx_t_3);
5852
+ __Pyx_XDECREF(__pyx_t_4);
5853
+ __Pyx_XDECREF(__pyx_t_5);
5854
+ __Pyx_WriteUnraisable("mysqlengine.engine.Engine.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
5855
+ __pyx_L0:;
5710
5856
  __Pyx_RefNannyFinishContext();
5711
5857
  }
5712
5858
 
@@ -7234,11 +7380,11 @@ static int __Pyx_CreateStringTabAndInitStrings(void) {
7234
7380
  {&__pyx_kp_u_Engine_The_database_access_name, __pyx_k_Engine_The_database_access_name, sizeof(__pyx_k_Engine_The_database_access_name), 0, 1, 0, 0},
7235
7381
  {&__pyx_kp_u_Engine_The_databases_argument_c, __pyx_k_Engine_The_databases_argument_c, sizeof(__pyx_k_Engine_The_databases_argument_c), 0, 1, 0, 0},
7236
7382
  {&__pyx_kp_u_Engine_The_value_of_the_databas, __pyx_k_Engine_The_value_of_the_databas, sizeof(__pyx_k_Engine_The_value_of_the_databas), 0, 1, 0, 0},
7237
- {&__pyx_kp_u_Engine___init___line_36, __pyx_k_Engine___init___line_36, sizeof(__pyx_k_Engine___init___line_36), 0, 1, 0, 0},
7383
+ {&__pyx_kp_u_Engine___init___line_37, __pyx_k_Engine___init___line_37, sizeof(__pyx_k_Engine___init___line_37), 0, 1, 0, 0},
7238
7384
  {&__pyx_n_s_Engine___reduce_cython, __pyx_k_Engine___reduce_cython, sizeof(__pyx_k_Engine___reduce_cython), 0, 0, 1, 1},
7239
7385
  {&__pyx_n_s_Engine___setstate_cython, __pyx_k_Engine___setstate_cython, sizeof(__pyx_k_Engine___setstate_cython), 0, 0, 1, 1},
7240
7386
  {&__pyx_n_s_Engine_access, __pyx_k_Engine_access, sizeof(__pyx_k_Engine_access), 0, 0, 1, 1},
7241
- {&__pyx_kp_u_Engine_access_line_115, __pyx_k_Engine_access_line_115, sizeof(__pyx_k_Engine_access_line_115), 0, 1, 0, 0},
7387
+ {&__pyx_kp_u_Engine_access_line_116, __pyx_k_Engine_access_line_116, sizeof(__pyx_k_Engine_access_line_116), 0, 1, 0, 0},
7242
7388
  {&__pyx_kp_u_Engine_databases_s, __pyx_k_Engine_databases_s, sizeof(__pyx_k_Engine_databases_s), 0, 1, 0, 0},
7243
7389
  {&__pyx_n_s_Engine_disconnect, __pyx_k_Engine_disconnect, sizeof(__pyx_k_Engine_disconnect), 0, 0, 1, 1},
7244
7390
  {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0},
@@ -7270,7 +7416,9 @@ static int __Pyx_CreateStringTabAndInitStrings(void) {
7270
7416
  {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
7271
7417
  {&__pyx_n_s_disconnect, __pyx_k_disconnect, sizeof(__pyx_k_disconnect), 0, 0, 1, 1},
7272
7418
  {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
7419
+ {&__pyx_n_s_encure_closed, __pyx_k_encure_closed, sizeof(__pyx_k_encure_closed), 0, 0, 1, 1},
7273
7420
  {&__pyx_n_s_err, __pyx_k_err, sizeof(__pyx_k_err), 0, 0, 1, 1},
7421
+ {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
7274
7422
  {&__pyx_n_s_errors, __pyx_k_errors, sizeof(__pyx_k_errors), 0, 0, 1, 1},
7275
7423
  {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
7276
7424
  {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0},
@@ -7280,11 +7428,13 @@ static int __Pyx_CreateStringTabAndInitStrings(void) {
7280
7428
  {&__pyx_n_s_initiate, __pyx_k_initiate, sizeof(__pyx_k_initiate), 0, 0, 1, 1},
7281
7429
  {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
7282
7430
  {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
7431
+ {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1},
7283
7432
  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
7284
7433
  {&__pyx_n_s_mysqlengine, __pyx_k_mysqlengine, sizeof(__pyx_k_mysqlengine), 0, 0, 1, 1},
7285
7434
  {&__pyx_n_s_mysqlengine_connection, __pyx_k_mysqlengine_connection, sizeof(__pyx_k_mysqlengine_connection), 0, 0, 1, 1},
7286
7435
  {&__pyx_n_s_mysqlengine_database, __pyx_k_mysqlengine_database, sizeof(__pyx_k_mysqlengine_database), 0, 0, 1, 1},
7287
7436
  {&__pyx_n_s_mysqlengine_engine, __pyx_k_mysqlengine_engine, sizeof(__pyx_k_mysqlengine_engine), 0, 0, 1, 1},
7437
+ {&__pyx_n_s_mysqlengine_logs, __pyx_k_mysqlengine_logs, sizeof(__pyx_k_mysqlengine_logs), 0, 0, 1, 1},
7288
7438
  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
7289
7439
  {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
7290
7440
  {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
@@ -7299,6 +7449,7 @@ static int __Pyx_CreateStringTabAndInitStrings(void) {
7299
7449
  {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
7300
7450
  {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
7301
7451
  {&__pyx_n_s_return, __pyx_k_return, sizeof(__pyx_k_return), 0, 0, 1, 1},
7452
+ {&__pyx_kp_u_s_is_not_closed_properly_Please, __pyx_k_s_is_not_closed_properly_Please, sizeof(__pyx_k_s_is_not_closed_properly_Please), 0, 1, 0, 0},
7302
7453
  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
7303
7454
  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
7304
7455
  {&__pyx_n_s_server, __pyx_k_server, sizeof(__pyx_k_server), 0, 0, 1, 1},
@@ -7340,30 +7491,30 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
7340
7491
  __Pyx_GOTREF(__pyx_tuple__4);
7341
7492
  __Pyx_GIVEREF(__pyx_tuple__4);
7342
7493
 
7343
- /* "mysqlengine/engine.py":115
7494
+ /* "mysqlengine/engine.py":116
7344
7495
  *
7345
7496
  * # Access -------------------------------------------------------------------------------------
7346
7497
  * async def access(self, db: str, **init_args: Any) -> Database: # <<<<<<<<<<<<<<
7347
7498
  * """Accesses a specific database on the Server.
7348
7499
  *
7349
7500
  */
7350
- __pyx_tuple__6 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_db, __pyx_n_s_init_args, __pyx_n_s_cache_key, __pyx_n_s_db_cls, __pyx_n_s_db_ins, __pyx_n_s_err); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 115, __pyx_L1_error)
7501
+ __pyx_tuple__6 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_db, __pyx_n_s_init_args, __pyx_n_s_cache_key, __pyx_n_s_db_cls, __pyx_n_s_db_ins, __pyx_n_s_err); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 116, __pyx_L1_error)
7351
7502
  __Pyx_GOTREF(__pyx_tuple__6);
7352
7503
  __Pyx_GIVEREF(__pyx_tuple__6);
7353
- __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mysqlengine_engine_py, __pyx_n_s_access, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 115, __pyx_L1_error)
7504
+ __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mysqlengine_engine_py, __pyx_n_s_access, 116, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 116, __pyx_L1_error)
7354
7505
 
7355
- /* "mysqlengine/engine.py":207
7506
+ /* "mysqlengine/engine.py":208
7356
7507
  *
7357
7508
  * # Disconnect ---------------------------------------------------------------------------------
7358
7509
  * async def disconnect(self, countdown: Union[int, None] = None) -> None: # <<<<<<<<<<<<<<
7359
7510
  * """Disconnect from the Server.
7360
7511
  *
7361
7512
  */
7362
- __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_countdown); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 207, __pyx_L1_error)
7513
+ __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_countdown); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 208, __pyx_L1_error)
7363
7514
  __Pyx_GOTREF(__pyx_tuple__7);
7364
7515
  __Pyx_GIVEREF(__pyx_tuple__7);
7365
- __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mysqlengine_engine_py, __pyx_n_s_disconnect, 207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 207, __pyx_L1_error)
7366
- __pyx_tuple__8 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 207, __pyx_L1_error)
7516
+ __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mysqlengine_engine_py, __pyx_n_s_disconnect, 208, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 208, __pyx_L1_error)
7517
+ __pyx_tuple__8 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 208, __pyx_L1_error)
7367
7518
  __Pyx_GOTREF(__pyx_tuple__8);
7368
7519
  __Pyx_GIVEREF(__pyx_tuple__8);
7369
7520
 
@@ -7463,15 +7614,15 @@ static int __Pyx_modinit_type_init_code(void) {
7463
7614
  __pyx_vtabptr_11mysqlengine_6engine_Engine = &__pyx_vtable_11mysqlengine_6engine_Engine;
7464
7615
  __pyx_vtable_11mysqlengine_6engine_Engine._validate_databases = (PyObject *(*)(struct __pyx_obj_11mysqlengine_6engine_Engine *, PyObject *))__pyx_f_11mysqlengine_6engine_6Engine__validate_databases;
7465
7616
  #if CYTHON_USE_TYPE_SPECS
7466
- __pyx_ptype_11mysqlengine_6engine_Engine = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_11mysqlengine_6engine_Engine_spec, NULL); if (unlikely(!__pyx_ptype_11mysqlengine_6engine_Engine)) __PYX_ERR(0, 26, __pyx_L1_error)
7467
- if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_11mysqlengine_6engine_Engine_spec, __pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
7617
+ __pyx_ptype_11mysqlengine_6engine_Engine = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_11mysqlengine_6engine_Engine_spec, NULL); if (unlikely(!__pyx_ptype_11mysqlengine_6engine_Engine)) __PYX_ERR(0, 27, __pyx_L1_error)
7618
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_11mysqlengine_6engine_Engine_spec, __pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 27, __pyx_L1_error)
7468
7619
  #else
7469
7620
  __pyx_ptype_11mysqlengine_6engine_Engine = &__pyx_type_11mysqlengine_6engine_Engine;
7470
7621
  #endif
7471
7622
  #if !CYTHON_COMPILING_IN_LIMITED_API
7472
7623
  #endif
7473
7624
  #if !CYTHON_USE_TYPE_SPECS
7474
- if (__Pyx_PyType_Ready(__pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
7625
+ if (__Pyx_PyType_Ready(__pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 27, __pyx_L1_error)
7475
7626
  #endif
7476
7627
  #if PY_MAJOR_VERSION < 3
7477
7628
  __pyx_ptype_11mysqlengine_6engine_Engine->tp_print = 0;
@@ -7483,7 +7634,7 @@ static int __Pyx_modinit_type_init_code(void) {
7483
7634
  #endif
7484
7635
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
7485
7636
  {
7486
- PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 26, __pyx_L1_error)
7637
+ PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 27, __pyx_L1_error)
7487
7638
  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
7488
7639
  __pyx_wrapperbase_11mysqlengine_6engine_6Engine___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
7489
7640
  __pyx_wrapperbase_11mysqlengine_6engine_6Engine___init__.doc = __pyx_doc_11mysqlengine_6engine_6Engine___init__;
@@ -7491,24 +7642,24 @@ static int __Pyx_modinit_type_init_code(void) {
7491
7642
  }
7492
7643
  }
7493
7644
  #endif
7494
- if (__Pyx_SetVtable(__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_vtabptr_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
7645
+ if (__Pyx_SetVtable(__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_vtabptr_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 27, __pyx_L1_error)
7495
7646
  #if !CYTHON_COMPILING_IN_LIMITED_API
7496
- if (__Pyx_MergeVtables(__pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
7647
+ if (__Pyx_MergeVtables(__pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 27, __pyx_L1_error)
7497
7648
  #endif
7498
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Engine, (PyObject *) __pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
7649
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Engine, (PyObject *) __pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 27, __pyx_L1_error)
7499
7650
  #if !CYTHON_COMPILING_IN_LIMITED_API
7500
- if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
7651
+ if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_11mysqlengine_6engine_Engine) < 0) __PYX_ERR(0, 27, __pyx_L1_error)
7501
7652
  #endif
7502
7653
  #if CYTHON_USE_TYPE_SPECS
7503
- __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_11mysqlengine_6engine___pyx_scope_struct__access_spec, NULL); if (unlikely(!__pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access)) __PYX_ERR(0, 115, __pyx_L1_error)
7504
- if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_11mysqlengine_6engine___pyx_scope_struct__access_spec, __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
7654
+ __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_11mysqlengine_6engine___pyx_scope_struct__access_spec, NULL); if (unlikely(!__pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access)) __PYX_ERR(0, 116, __pyx_L1_error)
7655
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_11mysqlengine_6engine___pyx_scope_struct__access_spec, __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
7505
7656
  #else
7506
7657
  __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access = &__pyx_type_11mysqlengine_6engine___pyx_scope_struct__access;
7507
7658
  #endif
7508
7659
  #if !CYTHON_COMPILING_IN_LIMITED_API
7509
7660
  #endif
7510
7661
  #if !CYTHON_USE_TYPE_SPECS
7511
- if (__Pyx_PyType_Ready(__pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
7662
+ if (__Pyx_PyType_Ready(__pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
7512
7663
  #endif
7513
7664
  #if PY_MAJOR_VERSION < 3
7514
7665
  __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct__access->tp_print = 0;
@@ -7519,15 +7670,15 @@ static int __Pyx_modinit_type_init_code(void) {
7519
7670
  }
7520
7671
  #endif
7521
7672
  #if CYTHON_USE_TYPE_SPECS
7522
- __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_11mysqlengine_6engine___pyx_scope_struct_1_disconnect_spec, NULL); if (unlikely(!__pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect)) __PYX_ERR(0, 207, __pyx_L1_error)
7523
- if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_11mysqlengine_6engine___pyx_scope_struct_1_disconnect_spec, __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
7673
+ __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_11mysqlengine_6engine___pyx_scope_struct_1_disconnect_spec, NULL); if (unlikely(!__pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect)) __PYX_ERR(0, 208, __pyx_L1_error)
7674
+ if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_11mysqlengine_6engine___pyx_scope_struct_1_disconnect_spec, __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect) < 0) __PYX_ERR(0, 208, __pyx_L1_error)
7524
7675
  #else
7525
7676
  __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect = &__pyx_type_11mysqlengine_6engine___pyx_scope_struct_1_disconnect;
7526
7677
  #endif
7527
7678
  #if !CYTHON_COMPILING_IN_LIMITED_API
7528
7679
  #endif
7529
7680
  #if !CYTHON_USE_TYPE_SPECS
7530
- if (__Pyx_PyType_Ready(__pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
7681
+ if (__Pyx_PyType_Ready(__pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect) < 0) __PYX_ERR(0, 208, __pyx_L1_error)
7531
7682
  #endif
7532
7683
  #if PY_MAJOR_VERSION < 3
7533
7684
  __pyx_ptype_11mysqlengine_6engine___pyx_scope_struct_1_disconnect->tp_print = 0;
@@ -7947,8 +8098,8 @@ if (!__Pyx_RefNanny) {
7947
8098
  *
7948
8099
  * # Python imports
7949
8100
  * from typing import Any, Union # <<<<<<<<<<<<<<
8101
+ * from mysqlengine.logs import logger
7950
8102
  * from mysqlengine import errors, utils
7951
- * from mysqlengine.connection import Server
7952
8103
  */
7953
8104
  __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
7954
8105
  __Pyx_GOTREF(__pyx_t_2);
@@ -7974,122 +8125,143 @@ if (!__Pyx_RefNanny) {
7974
8125
  /* "mysqlengine/engine.py":17
7975
8126
  * # Python imports
7976
8127
  * from typing import Any, Union
7977
- * from mysqlengine import errors, utils # <<<<<<<<<<<<<<
8128
+ * from mysqlengine.logs import logger # <<<<<<<<<<<<<<
8129
+ * from mysqlengine import errors, utils
7978
8130
  * from mysqlengine.connection import Server
7979
- * from mysqlengine.database import Database
7980
8131
  */
7981
- __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
8132
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
7982
8133
  __Pyx_GOTREF(__pyx_t_3);
7983
- __Pyx_INCREF(__pyx_n_s_errors);
7984
- __Pyx_GIVEREF(__pyx_n_s_errors);
7985
- if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_errors)) __PYX_ERR(0, 17, __pyx_L1_error);
7986
- __Pyx_INCREF(__pyx_n_s_utils);
7987
- __Pyx_GIVEREF(__pyx_n_s_utils);
7988
- if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_utils)) __PYX_ERR(0, 17, __pyx_L1_error);
7989
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_mysqlengine, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
8134
+ __Pyx_INCREF(__pyx_n_s_logger);
8135
+ __Pyx_GIVEREF(__pyx_n_s_logger);
8136
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_logger)) __PYX_ERR(0, 17, __pyx_L1_error);
8137
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_mysqlengine_logs, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
7990
8138
  __Pyx_GOTREF(__pyx_t_2);
7991
8139
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7992
- __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_errors); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
8140
+ __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
7993
8141
  __Pyx_GOTREF(__pyx_t_3);
7994
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_3) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
7995
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7996
- __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
7997
- __Pyx_GOTREF(__pyx_t_3);
7998
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_utils, __pyx_t_3) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
8142
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_3) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
7999
8143
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8000
8144
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8001
8145
 
8002
8146
  /* "mysqlengine/engine.py":18
8003
8147
  * from typing import Any, Union
8148
+ * from mysqlengine.logs import logger
8149
+ * from mysqlengine import errors, utils # <<<<<<<<<<<<<<
8150
+ * from mysqlengine.connection import Server
8151
+ * from mysqlengine.database import Database
8152
+ */
8153
+ __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
8154
+ __Pyx_GOTREF(__pyx_t_2);
8155
+ __Pyx_INCREF(__pyx_n_s_errors);
8156
+ __Pyx_GIVEREF(__pyx_n_s_errors);
8157
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_errors)) __PYX_ERR(0, 18, __pyx_L1_error);
8158
+ __Pyx_INCREF(__pyx_n_s_utils);
8159
+ __Pyx_GIVEREF(__pyx_n_s_utils);
8160
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_utils)) __PYX_ERR(0, 18, __pyx_L1_error);
8161
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_mysqlengine, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error)
8162
+ __Pyx_GOTREF(__pyx_t_3);
8163
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8164
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_errors); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
8165
+ __Pyx_GOTREF(__pyx_t_2);
8166
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
8167
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8168
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
8169
+ __Pyx_GOTREF(__pyx_t_2);
8170
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_utils, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
8171
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8172
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8173
+
8174
+ /* "mysqlengine/engine.py":19
8175
+ * from mysqlengine.logs import logger
8004
8176
  * from mysqlengine import errors, utils
8005
8177
  * from mysqlengine.connection import Server # <<<<<<<<<<<<<<
8006
8178
  * from mysqlengine.database import Database
8007
8179
  *
8008
8180
  */
8009
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
8010
- __Pyx_GOTREF(__pyx_t_2);
8181
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
8182
+ __Pyx_GOTREF(__pyx_t_3);
8011
8183
  __Pyx_INCREF(__pyx_n_s_Server);
8012
8184
  __Pyx_GIVEREF(__pyx_n_s_Server);
8013
- if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Server)) __PYX_ERR(0, 18, __pyx_L1_error);
8014
- __pyx_t_3 = __Pyx_Import(__pyx_n_s_mysqlengine_connection, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error)
8015
- __Pyx_GOTREF(__pyx_t_3);
8016
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8185
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Server)) __PYX_ERR(0, 19, __pyx_L1_error);
8186
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_mysqlengine_connection, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
8187
+ __Pyx_GOTREF(__pyx_t_2);
8017
8188
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8189
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8018
8190
 
8019
- /* "mysqlengine/engine.py":19
8191
+ /* "mysqlengine/engine.py":20
8020
8192
  * from mysqlengine import errors, utils
8021
8193
  * from mysqlengine.connection import Server
8022
8194
  * from mysqlengine.database import Database # <<<<<<<<<<<<<<
8023
8195
  *
8024
8196
  * __all__ = ["Engine"]
8025
8197
  */
8026
- __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
8027
- __Pyx_GOTREF(__pyx_t_3);
8198
+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
8199
+ __Pyx_GOTREF(__pyx_t_2);
8028
8200
  __Pyx_INCREF(__pyx_n_s_Database);
8029
8201
  __Pyx_GIVEREF(__pyx_n_s_Database);
8030
- if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Database)) __PYX_ERR(0, 19, __pyx_L1_error);
8031
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_mysqlengine_database, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
8032
- __Pyx_GOTREF(__pyx_t_2);
8033
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8034
- __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Database); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
8202
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Database)) __PYX_ERR(0, 20, __pyx_L1_error);
8203
+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_mysqlengine_database, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error)
8035
8204
  __Pyx_GOTREF(__pyx_t_3);
8036
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Database, __pyx_t_3) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
8037
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8038
8205
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8206
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Database); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
8207
+ __Pyx_GOTREF(__pyx_t_2);
8208
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Database, __pyx_t_2) < 0) __PYX_ERR(0, 20, __pyx_L1_error)
8209
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8210
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8039
8211
 
8040
- /* "mysqlengine/engine.py":21
8212
+ /* "mysqlengine/engine.py":22
8041
8213
  * from mysqlengine.database import Database
8042
8214
  *
8043
8215
  * __all__ = ["Engine"] # <<<<<<<<<<<<<<
8044
8216
  *
8045
8217
  *
8046
8218
  */
8047
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error)
8048
- __Pyx_GOTREF(__pyx_t_2);
8219
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error)
8220
+ __Pyx_GOTREF(__pyx_t_3);
8049
8221
  __Pyx_INCREF(__pyx_n_u_Engine);
8050
8222
  __Pyx_GIVEREF(__pyx_n_u_Engine);
8051
- if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_Engine)) __PYX_ERR(0, 21, __pyx_L1_error);
8052
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_2) < 0) __PYX_ERR(0, 21, __pyx_L1_error)
8053
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8223
+ if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_Engine)) __PYX_ERR(0, 22, __pyx_L1_error);
8224
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_3) < 0) __PYX_ERR(0, 22, __pyx_L1_error)
8225
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8054
8226
 
8055
- /* "mysqlengine/engine.py":115
8227
+ /* "mysqlengine/engine.py":116
8056
8228
  *
8057
8229
  * # Access -------------------------------------------------------------------------------------
8058
8230
  * async def access(self, db: str, **init_args: Any) -> Database: # <<<<<<<<<<<<<<
8059
8231
  * """Accesses a specific database on the Server.
8060
8232
  *
8061
8233
  */
8062
- __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error)
8063
- __Pyx_GOTREF(__pyx_t_2);
8064
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_db, __pyx_n_s_str) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
8065
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_init_args, __pyx_n_s_Any) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
8066
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_Database) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
8067
- __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_6Engine_3access, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_Engine_access, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
8234
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error)
8068
8235
  __Pyx_GOTREF(__pyx_t_3);
8069
- __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
8070
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8071
- if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_n_s_access, __pyx_t_3) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
8236
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_db, __pyx_n_s_str) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
8237
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_init_args, __pyx_n_s_Any) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
8238
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Database) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
8239
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_6Engine_3access, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_Engine_access, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error)
8240
+ __Pyx_GOTREF(__pyx_t_2);
8241
+ __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
8072
8242
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8243
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_n_s_access, __pyx_t_2) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
8244
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8073
8245
  PyType_Modified(__pyx_ptype_11mysqlengine_6engine_Engine);
8074
8246
 
8075
- /* "mysqlengine/engine.py":207
8247
+ /* "mysqlengine/engine.py":208
8076
8248
  *
8077
8249
  * # Disconnect ---------------------------------------------------------------------------------
8078
8250
  * async def disconnect(self, countdown: Union[int, None] = None) -> None: # <<<<<<<<<<<<<<
8079
8251
  * """Disconnect from the Server.
8080
8252
  *
8081
8253
  */
8082
- __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
8083
- __Pyx_GOTREF(__pyx_t_3);
8084
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_countdown, __pyx_kp_s_Union_int_None) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
8085
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
8086
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_6Engine_6disconnect, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_Engine_disconnect, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 207, __pyx_L1_error)
8254
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error)
8087
8255
  __Pyx_GOTREF(__pyx_t_2);
8088
- __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__8);
8089
- __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
8090
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8091
- if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_n_s_disconnect, __pyx_t_2) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
8256
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_countdown, __pyx_kp_s_Union_int_None) < 0) __PYX_ERR(0, 208, __pyx_L1_error)
8257
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(0, 208, __pyx_L1_error)
8258
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_6Engine_6disconnect, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_Engine_disconnect, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error)
8259
+ __Pyx_GOTREF(__pyx_t_3);
8260
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__8);
8261
+ __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
8092
8262
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8263
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_n_s_disconnect, __pyx_t_3) < 0) __PYX_ERR(0, 208, __pyx_L1_error)
8264
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8093
8265
  PyType_Modified(__pyx_ptype_11mysqlengine_6engine_Engine);
8094
8266
 
8095
8267
  /* "(tree fragment)":1
@@ -8097,10 +8269,10 @@ if (!__Pyx_RefNanny) {
8097
8269
  * cdef tuple state
8098
8270
  * cdef object _dict
8099
8271
  */
8100
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_6Engine_19__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Engine___reduce_cython, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
8101
- __Pyx_GOTREF(__pyx_t_2);
8102
- if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
8103
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8272
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_6Engine_19__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Engine___reduce_cython, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
8273
+ __Pyx_GOTREF(__pyx_t_3);
8274
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
8275
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8104
8276
  PyType_Modified(__pyx_ptype_11mysqlengine_6engine_Engine);
8105
8277
 
8106
8278
  /* "(tree fragment)":16
@@ -8109,10 +8281,10 @@ if (!__Pyx_RefNanny) {
8109
8281
  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
8110
8282
  * __pyx_unpickle_Engine__set_state(self, __pyx_state)
8111
8283
  */
8112
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_6Engine_21__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Engine___setstate_cython, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error)
8113
- __Pyx_GOTREF(__pyx_t_2);
8114
- if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
8115
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8284
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_6Engine_21__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Engine___setstate_cython, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 16, __pyx_L1_error)
8285
+ __Pyx_GOTREF(__pyx_t_3);
8286
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_11mysqlengine_6engine_Engine, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
8287
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8116
8288
  PyType_Modified(__pyx_ptype_11mysqlengine_6engine_Engine);
8117
8289
 
8118
8290
  /* "(tree fragment)":1
@@ -8120,22 +8292,22 @@ if (!__Pyx_RefNanny) {
8120
8292
  * cdef object __pyx_PickleError
8121
8293
  * cdef object __pyx_result
8122
8294
  */
8123
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_1__pyx_unpickle_Engine, 0, __pyx_n_s_pyx_unpickle_Engine, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
8124
- __Pyx_GOTREF(__pyx_t_2);
8125
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Engine, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
8126
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8295
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_11mysqlengine_6engine_1__pyx_unpickle_Engine, 0, __pyx_n_s_pyx_unpickle_Engine, NULL, __pyx_n_s_mysqlengine_engine, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
8296
+ __Pyx_GOTREF(__pyx_t_3);
8297
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Engine, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
8298
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8127
8299
 
8128
8300
  /* "mysqlengine/engine.py":1
8129
8301
  * # cython: language_level=3 # <<<<<<<<<<<<<<
8130
8302
  * # cython: wraparound=False
8131
8303
  * # cython: boundscheck=False
8132
8304
  */
8133
- __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
8134
- __Pyx_GOTREF(__pyx_t_2);
8135
- if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Engine___init___line_36, __pyx_kp_u_The_proxy_for_accessing_Database) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
8136
- if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Engine_access_line_115, __pyx_kp_u_Accesses_a_specific_database_on) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
8137
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
8138
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8305
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
8306
+ __Pyx_GOTREF(__pyx_t_3);
8307
+ if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_Engine___init___line_37, __pyx_kp_u_The_proxy_for_accessing_Database) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
8308
+ if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_Engine_access_line_116, __pyx_kp_u_Accesses_a_specific_database_on) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
8309
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
8310
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8139
8311
 
8140
8312
  /*--- Wrapped vars code ---*/
8141
8313
 
@@ -11554,6 +11726,50 @@ static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject
11554
11726
  "generator raised StopIteration");
11555
11727
  }
11556
11728
 
11729
+ /* WriteUnraisableException */
11730
+ static void __Pyx_WriteUnraisable(const char *name, int clineno,
11731
+ int lineno, const char *filename,
11732
+ int full_traceback, int nogil) {
11733
+ PyObject *old_exc, *old_val, *old_tb;
11734
+ PyObject *ctx;
11735
+ __Pyx_PyThreadState_declare
11736
+ #ifdef WITH_THREAD
11737
+ PyGILState_STATE state;
11738
+ if (nogil)
11739
+ state = PyGILState_Ensure();
11740
+ else state = (PyGILState_STATE)0;
11741
+ #endif
11742
+ CYTHON_UNUSED_VAR(clineno);
11743
+ CYTHON_UNUSED_VAR(lineno);
11744
+ CYTHON_UNUSED_VAR(filename);
11745
+ CYTHON_MAYBE_UNUSED_VAR(nogil);
11746
+ __Pyx_PyThreadState_assign
11747
+ __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
11748
+ if (full_traceback) {
11749
+ Py_XINCREF(old_exc);
11750
+ Py_XINCREF(old_val);
11751
+ Py_XINCREF(old_tb);
11752
+ __Pyx_ErrRestore(old_exc, old_val, old_tb);
11753
+ PyErr_PrintEx(1);
11754
+ }
11755
+ #if PY_MAJOR_VERSION < 3
11756
+ ctx = PyString_FromString(name);
11757
+ #else
11758
+ ctx = PyUnicode_FromString(name);
11759
+ #endif
11760
+ __Pyx_ErrRestore(old_exc, old_val, old_tb);
11761
+ if (!ctx) {
11762
+ PyErr_WriteUnraisable(Py_None);
11763
+ } else {
11764
+ PyErr_WriteUnraisable(ctx);
11765
+ Py_DECREF(ctx);
11766
+ }
11767
+ #ifdef WITH_THREAD
11768
+ if (nogil)
11769
+ PyGILState_Release(state);
11770
+ #endif
11771
+ }
11772
+
11557
11773
  /* KeywordStringCheck */
11558
11774
  static int __Pyx_CheckKeywordStrings(
11559
11775
  PyObject *kw,