Skip to content

Gis 7222 #150

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion uncoder-core/app/routers/translate.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from fastapi import APIRouter, Body

from app.models.translation import InfoMessage, OneTranslationData, Platform, TranslatorPlatforms
from app.translator.core.context_vars import return_only_first_query_ctx_var
from app.translator.cti_translator import CTITranslator
from app.translator.translator import Translator

Expand All @@ -15,7 +16,9 @@ def translate_one(
source_platform_id: str = Body(..., embed=True),
target_platform_id: str = Body(..., embed=True),
text: str = Body(..., embed=True),
return_only_first_query: bool = False,
) -> OneTranslationData:
return_only_first_query_ctx_var.set(return_only_first_query)
status, data = translator.translate_one(text=text, source=source_platform_id, target=target_platform_id)
if status:
return OneTranslationData(status=status, translation=data, target_platform_id=target_platform_id)
Expand All @@ -27,8 +30,11 @@ def translate_one(
@st_router.post("/translate/all", tags=["translator"], description="Generate all translations")
@st_router.post("/translate/all/", include_in_schema=False)
def translate_all(
source_platform_id: str = Body(..., embed=True), text: str = Body(..., embed=True)
source_platform_id: str = Body(..., embed=True),
text: str = Body(..., embed=True),
return_only_first_query: bool = False,
) -> list[OneTranslationData]:
return_only_first_query_ctx_var.set(return_only_first_query)
result = translator.translate_all(text=text, source=source_platform_id)
translations = []
for platform_result in result:
Expand Down
4 changes: 4 additions & 0 deletions uncoder-core/app/translator/core/context_vars.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from contextvars import ContextVar

return_only_first_query_ctx_var: ContextVar[bool] = ContextVar("return_only_first_query_ctx_var", default=False)
"""Set to True to return ony first query if rendered multiple options"""
4 changes: 4 additions & 0 deletions uncoder-core/app/translator/core/render.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from typing import Optional, Union

from app.translator.const import DEFAULT_VALUE_TYPE
from app.translator.core.context_vars import return_only_first_query_ctx_var
from app.translator.core.custom_types.tokens import LogicalOperatorType, OperatorType
from app.translator.core.custom_types.values import ValueType
from app.translator.core.escape_manager import EscapeManager
Expand Down Expand Up @@ -283,6 +284,7 @@ def finalize_query(
**kwargs, # noqa: ARG002
) -> str:
query = self.query_pattern.format(prefix=prefix, query=query, functions=functions).strip()

query = self.wrap_query_with_meta_info(meta_info=meta_info, query=query)
if not_supported_functions:
rendered_not_supported = self.render_not_supported_functions(not_supported_functions)
Expand Down Expand Up @@ -368,6 +370,8 @@ def _generate_from_tokenized_query_container(self, query_container: TokenizedQue
meta_info=query_container.meta_info,
source_mapping=source_mapping,
)
if return_only_first_query_ctx_var.get() is True:
return finalized_query
queries_map[source_mapping.source_id] = finalized_query
if not queries_map and errors:
raise errors[0]
Expand Down
4 changes: 3 additions & 1 deletion uncoder-core/app/translator/platforms/base/aql/const.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
UTF8_PAYLOAD_PATTERN = r"UTF8\(payload\)"
NUM_VALUE_PATTERN = r"(?P<num_value>\d+(?:\.\d+)*)"
SINGLE_QUOTES_VALUE_PATTERN = r"""'(?P<s_q_value>(?:[:a-zA-Z\*0-9=+%#\-\/\\|,;_<>`~".$&^@!?\(\)\{\}\[\]\s]|'')*)'"""
SINGLE_QUOTES_VALUE_PATTERN = (
r"""'(?P<s_q_value>(?:[:a-zA-Zа-яА-Я\*0-9=+%#\-\/\\|,;_<>`~".$&^@!?\(\)\{\}\[\]\s]|'')*)'"""
)
TABLE_PATTERN = r"\s+FROM\s+[a-zA-Z.\-*]+"
TABLE_GROUP_PATTERN = r"\s+FROM\s+(?P<table>[a-zA-Z.\-*]+)"
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from typing import Optional, Union

from app.translator.const import DEFAULT_VALUE_TYPE
from app.translator.core.context_vars import return_only_first_query_ctx_var
from app.translator.core.custom_types.meta_info import SeverityType
from app.translator.core.custom_types.tokens import GroupType, LogicalOperatorType, OperatorType
from app.translator.core.custom_types.values import ValueType
Expand Down Expand Up @@ -273,6 +274,8 @@ def _generate_from_tokenized_query_container(self, query_container: TokenizedQue
source_mapping=source_mapping,
fields=mapped_fields_set,
)
if return_only_first_query_ctx_var.get() is True:
return finalized_query
queries_map[source_mapping.source_id] = finalized_query

return self.finalize(queries_map)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from typing import Union

from app.translator.const import DEFAULT_VALUE_TYPE
from app.translator.core.context_vars import return_only_first_query_ctx_var
from app.translator.core.custom_types.tokens import LogicalOperatorType
from app.translator.core.custom_types.values import ValueType
from app.translator.core.exceptions.core import StrictPlatformException
Expand Down Expand Up @@ -262,6 +263,8 @@ def _generate_from_tokenized_query_container(self, query_container: TokenizedQue
meta_info=query_container.meta_info,
source_mapping=source_mapping,
)
if return_only_first_query_ctx_var.get() is True:
return finalized_query
queries_map[source_mapping.source_id] = finalized_query

return self.finalize(queries_map)
Loading