Skip to content

Commit a069c52

Browse files
committed
refactor: Move and reorder files
1 parent 5356499 commit a069c52

File tree

10 files changed

+47
-53
lines changed

10 files changed

+47
-53
lines changed

src/graphql_complexity/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
from graphql_complexity.evaluator.complexity import get_complexity
2+
13
from .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",
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from .complexity import get_complexity
2+
3+
__all__ = [
4+
'get_complexity',
5+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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.

src/graphql_complexity/extensions/strawberry_graphql.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
from typing import Type
22

3-
from graphql import GraphQLError, visit
3+
from graphql import GraphQLError
44
from 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

1310
def 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(

src/graphql_complexity/services.py

Lines changed: 0 additions & 10 deletions
This file was deleted.

tests/test_complexity_visitor.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
import 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

87
def _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

1712
def test_one_field_simple_complexity_calculation():

tests/test_directives_estimator.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
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

74
def _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

2014
def 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

tests/test_examples.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
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

78
def _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

1816
def 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

4540
def test_simple_query_with_directive_estimator():

tests/test_simple_estimator.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 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

76
def _evaluate_complexity_with_simple_estimator(

0 commit comments

Comments
 (0)