@@ -120,21 +120,34 @@ def _rule_for_view(
120120 rule = app .url_map ._rules_by_endpoint [endpoint ][0 ]
121121 return rule
122122
123+ @staticmethod
124+ def _view_for_rule (
125+ rule : Rule ,
126+ app : Optional [Flask ] = None ,
127+ ) -> Union [Callable [..., Any ], "RouteCallable" ]:
128+ if app is None :
129+ app = current_app
130+ return app .view_functions [rule .endpoint ]
131+
123132 def path_helper (
124133 self ,
125134 path : Optional [str ] = None ,
126135 operations : Optional [dict ] = None ,
127136 parameters : Optional [List [dict ]] = None ,
128137 * ,
129138 view : Optional [Union [Callable [..., Any ], "RouteCallable" ]] = None ,
139+ rule : Optional [Rule ] = None ,
130140 app : Optional [Flask ] = None ,
131141 ** kwargs : Any ,
132142 ) -> Optional [str ]:
133143 """Path helper that allows passing a Flask view function."""
134- assert view is not None
144+ assert view is not None or rule is not None
135145 assert operations is not None
136146
137- rule = self ._rule_for_view (view , app = app )
147+ if rule is None :
148+ rule = self ._rule_for_view (view , app = app )
149+ if view is None :
150+ view = self ._view_for_rule (rule , app = app )
138151 view_doc = view .__doc__ or ""
139152 doc_operations = yaml_utils .load_operations_from_docstring (view_doc )
140153 operations .update (doc_operations )
0 commit comments