1- # cython: language_level=3, cython: binding=True
2- from __future__ import annotations
3-
1+ # cython: language=c++
2+ # cython: language_level=3
3+ # cython: binding=True
4+ # cython: cdivision=True
5+ # cython: boundscheck=False
6+ # cython: initializedcheck=False
47import json
58import logging
6- import re
79from typing import Any, Dict, List, Optional, Tuple, Type, TypeVar, Union
810
911from flask import Response, g, request
1012
1113from flask_inputfilter.Condition import BaseCondition
1214from flask_inputfilter.Exception import ValidationError
1315from flask_inputfilter.Filter import BaseFilter
16+ from flask_inputfilter.Mixin import ExternalApiMixin
1417from flask_inputfilter.Model import ExternalApiConfig, FieldModel
1518from flask_inputfilter.Validator import BaseValidator
16- from flask_inputfilter.Mixin import ExternalApiMixin
1719
1820T = TypeVar(" T" )
1921
@@ -179,8 +181,8 @@ cdef class InputFilter:
179181 cdef object fallback
180182 cdef list filters
181183 cdef list validators
182- cdef Optional[ object ] external_api
183- cdef Optional[ str ] copy
184+ cdef object external_api
185+ cdef str copy
184186
185187 for field_name, field_info in self .fields.items():
186188 value = data.get(field_name)
@@ -199,7 +201,7 @@ cdef class InputFilter:
199201 value = self .validated_data.get(copy)
200202
201203 if external_api:
202- value = ExternalApiMixin.callExternalApi(
204+ value = ExternalApiMixin() .callExternalApi(
203205 external_api, fallback, self .validated_data
204206 )
205207
@@ -259,7 +261,7 @@ cdef class InputFilter:
259261 """
260262 return self .conditions
261263
262- cdef void checkConditions(self , validated_data: Dict[str , Any]):
264+ cdef void checkConditions(self , validated_data: Dict[str , Any]) except * :
263265 """
264266 Checks if all conditions are met.
265267
@@ -468,7 +470,7 @@ cdef class InputFilter:
468470 steps: Optional[List[Union[BaseFilter, BaseValidator]]] = None ,
469471 external_api: Optional[ExternalApiConfig] = None ,
470472 copy: Optional[str ] = None ,
471- ):
473+ ) except * :
472474 """
473475 Add the field to the input filter.
474476
@@ -498,6 +500,7 @@ cdef class InputFilter:
498500 from.
499501 """
500502 if name in self .fields:
503+ print (self .fields)
501504 raise ValueError (f" Field '{name}' already exists." )
502505
503506 self .fields[name] = FieldModel(
@@ -686,7 +689,7 @@ cdef class InputFilter:
686689 @staticmethod
687690 cdef object checkForRequired(
688691 field_name: str ,
689- required: bint ,
692+ required: bool ,
690693 default: Any,
691694 fallback: Any,
692695 value: Any,
0 commit comments