-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refactor project structure and add pattern parameter
- Loading branch information
Showing
32 changed files
with
409 additions
and
244 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
from .infrastructure.middleware.fastapi import ProfyleMiddleware as fast_mid | ||
from .infrastructure.middleware.flask import ProfyleMiddleware as flask_mid | ||
|
||
|
||
ProfyleFlaskMiddleware = flask_mid | ||
ProfyleFastApiMiddleware = fast_mid |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
import tempfile | ||
import json | ||
import fnmatch | ||
import re | ||
from typing import Any, Optional | ||
|
||
from viztracer import VizTracer | ||
|
||
from profyle.application.trace.store import store_trace | ||
from profyle.domain.trace_repository import TraceRepository | ||
from profyle.domain.trace import Trace | ||
|
||
|
||
class profyle: | ||
|
||
def __init__( | ||
self, | ||
name: str, | ||
pattern: Optional[str] = None, | ||
tracer: VizTracer = VizTracer( | ||
verbose=0, | ||
log_async=True | ||
) | ||
) -> None: | ||
self.name = name | ||
self.tracer = tracer | ||
self.temp_file = None | ||
self.pattern = pattern | ||
self.trace: Optional[Trace] = None | ||
|
||
def __enter__(self): | ||
|
||
if self.should_trace(): | ||
self.temp_file = tempfile.NamedTemporaryFile(suffix='.json') | ||
self.tracer.start() | ||
|
||
def __exit__( | ||
self, | ||
*args, | ||
): | ||
if self.temp_file: | ||
self.tracer.stop() | ||
self.tracer.save(self.temp_file.name) | ||
self.temp_file.close() | ||
self.data = self.tracer.data | ||
|
||
self.trace = Trace( | ||
data=json.dumps(self.data), | ||
name=self.name, | ||
) | ||
|
||
def should_trace(self) -> bool: | ||
if not self.pattern: | ||
return True | ||
|
||
regex = fnmatch.translate(self.pattern) | ||
reobj = re.compile(regex) | ||
return bool(reobj.match(self.name)) | ||
|
||
|
||
class profyle_stored(profyle): | ||
|
||
def __init__( | ||
self, | ||
repo: TraceRepository, | ||
**data: Any, | ||
) -> None: | ||
self.repo = repo | ||
super().__init__(**data) | ||
|
||
def __exit__(self, *args): | ||
super().__exit__(*args) | ||
|
||
if self.temp_file and self.trace: | ||
store_trace( | ||
trace=self.trace, | ||
repo=self.repo | ||
) |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
from profyle.domain.trace_repository import TraceRepository | ||
|
||
|
||
def create_trace_selected_table(repo: TraceRepository) -> None: | ||
return repo.create_trace_selected_table() | ||
|
||
|
||
def create_trace_table(repo: TraceRepository) -> None: | ||
return repo.create_trace_table() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
from typing import List, Optional | ||
from profyle.domain.trace import Trace | ||
from profyle.domain.trace_repository import TraceRepository | ||
|
||
|
||
def get_all_traces(repo: TraceRepository) -> List[Trace]: | ||
return repo.get_all_traces() | ||
|
||
|
||
def get_trace_selected(repo: TraceRepository) -> Optional[int]: | ||
return repo.get_trace_selected() | ||
|
||
|
||
def get_trace_by_id(trace_id: int, repo: TraceRepository) -> Optional[Trace]: | ||
return repo.get_trace_by_id(trace_id) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
from profyle.domain.trace_repository import TraceRepository | ||
|
||
|
||
def remove_all_traces(repo: TraceRepository) -> int: | ||
return repo.remove_all_traces() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
from profyle.domain.trace import Trace | ||
from profyle.domain.trace_repository import TraceRepository | ||
|
||
|
||
def store_trace_selected(trace_id: int, repo: TraceRepository) -> None: | ||
repo.store_trace_selected(trace_id=trace_id) | ||
|
||
|
||
def store_trace(trace: Trace, repo: TraceRepository) -> None: | ||
repo.store_trace(trace) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
from profyle.domain.trace_repository import TraceRepository | ||
|
||
|
||
def vacuum(repo: TraceRepository) -> None: | ||
repo.vacuum() |
This file was deleted.
Oops, something went wrong.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
from abc import ABC, abstractmethod | ||
from typing import List, Optional | ||
|
||
from profyle.domain.trace import Trace | ||
|
||
|
||
class TraceRepository(ABC): | ||
|
||
@abstractmethod | ||
def create_trace_selected_table(self) -> None: | ||
... | ||
|
||
@abstractmethod | ||
def create_trace_table(self) -> None: | ||
... | ||
|
||
@abstractmethod | ||
def remove_all_traces(self) -> int: | ||
... | ||
|
||
@abstractmethod | ||
def vacuum(self) -> None: | ||
... | ||
|
||
@abstractmethod | ||
def store_trace_selected(self, trace_id: int) -> None: | ||
... | ||
|
||
@abstractmethod | ||
def store_trace(self, trace: Trace) -> None: | ||
... | ||
|
||
@abstractmethod | ||
def get_all_traces(self) -> List[Trace]: | ||
... | ||
|
||
@abstractmethod | ||
def get_trace_by_id(self, id: int) -> Optional[Trace]: | ||
... | ||
|
||
def get_trace_selected(self) -> Optional[int]: | ||
... |
File renamed without changes.
Oops, something went wrong.