Skip to content

Commit

Permalink
fix linting issues
Browse files Browse the repository at this point in the history
  • Loading branch information
dancoates committed Jun 24, 2024
1 parent 71ffd6b commit 8d59fa7
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 11 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,4 @@ web/src/__generated__
Pulumi*.yaml

# performance profile files
profiles
profiles
24 changes: 18 additions & 6 deletions api/graphql/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,10 @@ def to_internal_filter_mapped(self, f: Callable[[T], Y]) -> GenericFilter[Y]:
# issue in strawberry graphql where the usage of generics in input types causes major
# slowdowns.
# @see https://github.com/strawberry-graphql/strawberry/issues/3544
@strawberry.input(description='Filter for GraphQL queries')
@strawberry.input(description='String filter for GraphQL queries')
class GraphQLFilterStr(GraphQLFilter[str]):
"""String filter for GraphQL queries"""

eq: str | None = None
in_: list[str] | None = None
nin: list[str] | None = None
Expand All @@ -102,8 +104,10 @@ class GraphQLFilterStr(GraphQLFilter[str]):
icontains: str | None = None


@strawberry.input(description='Filter for GraphQL queries')
@strawberry.input(description='Int filter for GraphQL queries')
class GraphQLFilterInt(GraphQLFilter[int]):
"""Int filter for GraphQL queries"""

eq: int | None = None
in_: list[int] | None = None
nin: list[int] | None = None
Expand All @@ -115,8 +119,10 @@ class GraphQLFilterInt(GraphQLFilter[int]):
icontains: int | None = None


@strawberry.input(description='Filter for GraphQL queries')
@strawberry.input(description='Bool filter for GraphQL queries')
class GraphQLFilterBool(GraphQLFilter[bool]):
"""Bool filter for GraphQL queries"""

eq: bool | None = None
in_: list[bool] | None = None
nin: list[bool] | None = None
Expand All @@ -128,8 +134,10 @@ class GraphQLFilterBool(GraphQLFilter[bool]):
icontains: bool | None = None


@strawberry.input(description='Filter for GraphQL queries')
@strawberry.input(description='Analysis status filter for GraphQL queries')
class GraphQLFilterAnalysisStatus(GraphQLFilter[AnalysisStatus]):
"""Analysis status filter for GraphQL queries"""

eq: AnalysisStatus | None = None
in_: list[AnalysisStatus] | None = None
nin: list[AnalysisStatus] | None = None
Expand All @@ -141,8 +149,10 @@ class GraphQLFilterAnalysisStatus(GraphQLFilter[AnalysisStatus]):
icontains: AnalysisStatus | None = None


@strawberry.input(description='Filter for GraphQL queries')
@strawberry.input(description='Datetime filter for GraphQL queries')
class GraphQLFilterDatetime(GraphQLFilter[datetime.datetime]):
"""Datetime filter for GraphQL queries"""

eq: datetime.datetime | None = None
in_: list[datetime.datetime] | None = None
nin: list[datetime.datetime] | None = None
Expand All @@ -154,8 +164,10 @@ class GraphQLFilterDatetime(GraphQLFilter[datetime.datetime]):
icontains: datetime.datetime | None = None


@strawberry.input(description='Filter for GraphQL queries')
@strawberry.input(description='Date filter for GraphQL queries')
class GraphQLFilterDate(GraphQLFilter[datetime.date]):
"""Date filter for GraphQL queries"""

eq: datetime.date | None = None
in_: list[datetime.date] | None = None
nin: list[datetime.date] | None = None
Expand Down
7 changes: 4 additions & 3 deletions api/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,16 @@ async def app_lifespan(_: FastAPI):
from pyinstrument import Profiler
from pyinstrument.renderers.speedscope import SpeedscopeRenderer

@app.middleware("http")
@app.middleware('http')
async def profile_request(request: Request, call_next):
profiler = Profiler(async_mode="enabled")
"""Middleware to allow profiling of requests to the api"""
profiler = Profiler(async_mode='enabled')
profiler.start()
resp = await call_next(request)
profiler.stop()

text_output = profiler.output_text()
if 'text' in PROFILE_REQUESTS_OUTPUT:
text_output = profiler.output_text()
print(text_output)

timestamp = datetime.datetime.now().replace(microsecond=0).isoformat()
Expand Down
2 changes: 1 addition & 1 deletion docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -429,4 +429,4 @@ If you are working on performance issues it can be handy to generate a report th

There are a few different options for outputting profiles which can be specified in the `SM_PROFILE_REQUESTS_OUTPUT` environment variable. The possible values are `text` which will print the profiling results to stdout, `html` which will generate an interactive pyinstrument report, or `json` which will generate a json profiling report which can be dropped into [speedscope](https://www.speedscope.app/) to explore the profile.

You can output multiple report types by specifying the types in a list like: `export SM_PROFILE_REQUESTS_OUTPUT=json,text,html`
You can output multiple report types by specifying the types in a list like: `export SM_PROFILE_REQUESTS_OUTPUT=json,text,html`

0 comments on commit 8d59fa7

Please sign in to comment.