File tree Expand file tree Collapse file tree 10 files changed +47
-53
lines changed Expand file tree Collapse file tree 10 files changed +47
-53
lines changed Original file line number Diff line number Diff line change 1+ from graphql_complexity .evaluator .complexity import get_complexity
2+
13from .estimators import (
24 ComplexityEstimator ,
35 DirectivesEstimator ,
46 SimpleEstimator
57)
6- from .visitor import ComplexityVisitor
78
89__all__ = [
9- "ComplexityVisitor " ,
10+ "get_complexity " ,
1011 "SimpleEstimator" ,
1112 "ComplexityEstimator" ,
1213 "DirectivesEstimator" ,
Original file line number Diff line number Diff line change 1+ from .complexity import get_complexity
2+
3+ __all__ = [
4+ 'get_complexity' ,
5+ ]
Original file line number Diff line number Diff line change 1+ from graphql import parse , visit
2+
3+ from ..estimators import ComplexityEstimator
4+ from .visitor import ComplexityVisitor
5+
6+
7+ def get_complexity (query : str , estimator : ComplexityEstimator ) -> int :
8+ """Calculate the complexity of a query using the provided estimator."""
9+ ast = parse (query )
10+ return get_ast_complexity (ast , estimator = estimator )
11+
12+
13+ def get_ast_complexity (ast , estimator : ComplexityEstimator ) -> int :
14+ """Calculate the complexity of a query using the provided estimator."""
15+ visitor = ComplexityVisitor (estimator = estimator )
16+ visit (ast , visitor )
17+
18+ return visitor .evaluate ()
File renamed without changes.
Original file line number Diff line number Diff line change 11from typing import Type
22
3- from graphql import GraphQLError , visit
3+ from graphql import GraphQLError
44from strawberry .extensions import SchemaExtension
55
6- from graphql_complexity import (
7- ComplexityEstimator ,
8- ComplexityVisitor ,
9- SimpleEstimator
10- )
6+ from graphql_complexity .estimators import ComplexityEstimator , SimpleEstimator
7+ from graphql_complexity .evaluator .complexity import get_ast_complexity
118
129
1310def build_complexity_extension (
@@ -23,10 +20,10 @@ class ComplexityExtension(SchemaExtension):
2320 def on_validate (
2421 self ,
2522 ):
26- self .visitor = ComplexityVisitor ( estimator = estimator )
27- visit ( self .execution_context .graphql_document , self . visitor )
28-
29- self . estimated_complexity = self . visitor . evaluate ( )
23+ self .estimated_complexity = get_ast_complexity (
24+ ast = self .execution_context .graphql_document ,
25+ estimator = estimator
26+ )
3027
3128 if max_complexity and self .estimated_complexity > max_complexity :
3229 error = GraphQLError (
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 11import pytest
2- from graphql import parse , visit
32
4- from graphql_complexity . estimators import SimpleEstimator
5- from graphql_complexity .visitor import ComplexityVisitor
3+ from graphql_complexity import SimpleEstimator , get_complexity
4+ from graphql_complexity .evaluator . visitor import ComplexityVisitor
65
76
87def _evaluate_complexity (query : str , estimator = None ):
9- ast = parse (query )
108 estimator = estimator or SimpleEstimator (1 , 1 )
11- visitor = ComplexityVisitor (estimator = estimator )
12- visit (ast , visitor )
13-
14- return visitor .evaluate ()
9+ return get_complexity (query , estimator )
1510
1611
1712def test_one_field_simple_complexity_calculation ():
Original file line number Diff line number Diff line change 1- from graphql import parse , visit
2-
3- from graphql_complexity .estimators import DirectivesEstimator
4- from graphql_complexity .visitor import ComplexityVisitor
1+ from graphql_complexity import DirectivesEstimator , get_complexity
52
63
74def _evaluate_complexity_with_directives_estimator (
85 query : str ,
96 schema : str ,
107 ** kwargs ,
118):
12- ast = parse (query )
139 estimator = DirectivesEstimator (schema , ** kwargs )
14- visitor = ComplexityVisitor (estimator = estimator )
15- visit (ast , visitor )
1610
17- return visitor . evaluate ( )
11+ return get_complexity ( query , estimator )
1812
1913
2014def test_simple_query_with_directive_estimator ():
@@ -150,4 +144,4 @@ def test_directive_estimator_should_accept_field_with_directive_is_part_of_an_ob
150144
151145 complexity = _evaluate_complexity_with_directives_estimator (query , schema )
152146
153- assert complexity == 4
147+ assert complexity == 123
Original file line number Diff line number Diff line change 1- from graphql import parse , visit
2-
3- from graphql_complexity .estimators import DirectivesEstimator , SimpleEstimator
4- from graphql_complexity .visitor import ComplexityVisitor
1+ from graphql_complexity import (
2+ DirectivesEstimator ,
3+ SimpleEstimator ,
4+ get_complexity
5+ )
56
67
78def _evaluate_complexity_with_simple_estimator (
89 query : str , field_complexity = 1 , multiplier = 1
910):
10- ast = parse (query )
1111 estimator = SimpleEstimator (field_complexity , multiplier )
12- visitor = ComplexityVisitor (estimator = estimator )
13- visit (ast , visitor )
1412
15- return visitor . evaluate ( )
13+ return get_complexity ( query , estimator )
1614
1715
1816def test_root_fields_complexity_is_added ():
@@ -34,12 +32,9 @@ def _evaluate_complexity_with_directives_estimator(
3432 query : str ,
3533 schema : str ,
3634):
37- ast = parse (query )
3835 estimator = DirectivesEstimator (schema )
39- visitor = ComplexityVisitor (estimator = estimator )
40- visit (ast , visitor )
4136
42- return visitor . evaluate ( )
37+ return get_complexity ( query , estimator )
4338
4439
4540def test_simple_query_with_directive_estimator ():
Original file line number Diff line number Diff line change 11import pytest
22
3- from graphql_complexity .estimators import SimpleEstimator
4- from graphql_complexity .services import get_complexity
3+ from graphql_complexity import SimpleEstimator , get_complexity
54
65
76def _evaluate_complexity_with_simple_estimator (
You can’t perform that action at this time.
0 commit comments