@@ -665,12 +665,7 @@ pub async fn run_rsgi(
665665 jwt_validation,
666666 read_json_body,
667667 read_form_body,
668- dep_names,
669- dep_factories,
670- dep_is_async,
671- dep_wants_request,
672- dep_factory_params,
673- dep_factory_varkw,
668+ dependencies,
674669 handler_param_names,
675670 handler_varkw,
676671 body_model,
@@ -688,12 +683,7 @@ pub async fn run_rsgi(
688683 e. extra . jwt_validation . clone ( ) ,
689684 e. read_json_body ,
690685 e. read_form_body ,
691- Arc :: clone ( & e. extra . dep_names ) ,
692- Arc :: clone ( & e. extra . dep_factories ) ,
693- Arc :: clone ( & e. extra . dep_is_async ) ,
694- Arc :: clone ( & e. extra . dep_wants_request ) ,
695- Arc :: clone ( & e. extra . dep_factory_params ) ,
696- Arc :: clone ( & e. extra . dep_factory_varkw ) ,
686+ Arc :: clone ( & e. extra . dependencies ) ,
697687 Arc :: clone ( & e. extra . handler_param_names ) ,
698688 e. handler_varkw ,
699689 e. body_model . clone ( ) ,
@@ -923,7 +913,7 @@ pub async fn run_rsgi(
923913 } else {
924914 ( HashMap :: new ( ) , vec ! [ ] )
925915 } ;
926- let need_req_ctx = dep_wants_request . iter ( ) . any ( |& x| x ) ;
916+ let need_req_ctx = dependencies . iter ( ) . any ( |d| d . wants_request ) ;
927917 let request_ctx: Option < Py < PyAny > > = if need_req_ctx {
928918 match Python :: with_gil ( |py| -> PyResult < Py < PyAny > > {
929919 let s = scope. bind ( py) ;
@@ -939,26 +929,23 @@ pub async fn run_rsgi(
939929 } else {
940930 None
941931 } ;
942- let mut dep_out: Vec < PyObject > = Vec :: with_capacity ( dep_factories. len ( ) ) ;
943- for ( i, fact) in dep_factories. iter ( ) . enumerate ( ) {
944- let wants_request = dep_wants_request. get ( i) == Some ( & true ) ;
945- let factory_params = dep_factory_params. get ( i) ;
946- let factory_varkw = dep_factory_varkw. get ( i) . copied ( ) . unwrap_or ( false ) ;
947- let o = if dep_is_async. get ( i) == Some ( & true ) {
932+ let mut dep_out: Vec < PyObject > = Vec :: with_capacity ( dependencies. len ( ) ) ;
933+ for ( i, dep) in dependencies. iter ( ) . enumerate ( ) {
934+ let o = if dep. is_async {
948935 let r = match Python :: with_gil ( |py| -> PyResult < PyObject > {
949936 let kw = PyDict :: new ( py) ;
950- if wants_request {
937+ if dep . wants_request {
951938 if let Some ( ref rc) = request_ctx {
952939 kw. set_item ( "request" , rc. bind ( py) ) ?;
953940 }
954941 }
955- for j in 0 ..i {
956- let name = & dep_names [ j ] ;
957- if factory_varkw || factory_params. is_none_or ( |p| p . contains ( name) ) {
942+ for ( j , prev_dep ) in dependencies [ ..i] . iter ( ) . enumerate ( ) {
943+ let name = & prev_dep . name ;
944+ if dep . factory_varkw || dep . factory_params . contains ( name) {
958945 kw. set_item ( name. as_str ( ) , dep_out[ j] . bind ( py) ) ?;
959946 }
960947 }
961- let f = fact . bind ( py) ;
948+ let f = dep . factory . bind ( py) ;
962949 if kw. is_empty ( ) {
963950 Ok ( f. call0 ( ) ?. unbind ( ) )
964951 } else {
@@ -1012,18 +999,18 @@ pub async fn run_rsgi(
1012999 } else {
10131000 match Python :: with_gil ( |py| -> PyResult < PyObject > {
10141001 let kw = PyDict :: new ( py) ;
1015- if wants_request {
1002+ if dep . wants_request {
10161003 if let Some ( ref rc) = request_ctx {
10171004 kw. set_item ( "request" , rc. bind ( py) ) ?;
10181005 }
10191006 }
1020- for j in 0 ..i {
1021- let name = & dep_names [ j ] ;
1022- if factory_varkw || factory_params. is_none_or ( |p| p . contains ( name) ) {
1007+ for ( j , prev_dep ) in dependencies [ ..i] . iter ( ) . enumerate ( ) {
1008+ let name = & prev_dep . name ;
1009+ if dep . factory_varkw || dep . factory_params . contains ( name) {
10231010 kw. set_item ( name. as_str ( ) , dep_out[ j] . bind ( py) ) ?;
10241011 }
10251012 }
1026- let f = fact . bind ( py) ;
1013+ let f = dep . factory . bind ( py) ;
10271014 if kw. is_empty ( ) {
10281015 Ok ( f. call0 ( ) ?. unbind ( ) )
10291016 } else {
@@ -1098,8 +1085,8 @@ pub async fn run_rsgi(
10981085 read_form_body && ( handler_varkw || handler_param_names. contains ( "files" ) ) ;
10991086 let should_pass_protocol = handler_varkw || handler_param_names. contains ( "protocol" ) ;
11001087 let should_pass_body = !read_form_body && !body_bytes. is_empty ( ) && body_json. is_none ( ) ;
1101- let has_dep_kwargs = dep_names . iter ( ) . enumerate ( ) . any ( |( i, name ) | {
1102- dep_out. get ( i) . is_some ( ) && ( handler_varkw || handler_param_names. contains ( name) )
1088+ let has_dep_kwargs = dependencies . iter ( ) . enumerate ( ) . any ( |( i, dep ) | {
1089+ dep_out. get ( i) . is_some ( ) && ( handler_varkw || handler_param_names. contains ( & dep . name ) )
11031090 } ) ;
11041091 let should_use_kwargs = !param_map. is_empty ( )
11051092 || !query_map. is_empty ( )
@@ -1132,10 +1119,10 @@ pub async fn run_rsgi(
11321119 }
11331120 kwargs. set_item ( "query" , qd) ?;
11341121 }
1135- for ( i, name ) in dep_names . iter ( ) . enumerate ( ) {
1122+ for ( i, dep ) in dependencies . iter ( ) . enumerate ( ) {
11361123 if let Some ( oo) = dep_out. get ( i) {
1137- if handler_varkw || handler_param_names. contains ( name) {
1138- kwargs. set_item ( name, oo. bind ( py) ) ?;
1124+ if handler_varkw || handler_param_names. contains ( & dep . name ) {
1125+ kwargs. set_item ( & dep . name , oo. bind ( py) ) ?;
11391126 }
11401127 }
11411128 }
0 commit comments