Skip to content

Commit 12dd7ee

Browse files
committed
Modernize validators
1 parent 1256537 commit 12dd7ee

File tree

29 files changed

+145
-92
lines changed

29 files changed

+145
-92
lines changed

syncmaster/db/repositories/connection.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,12 @@ async def copy(
121121
new_name: str | None,
122122
) -> Connection:
123123
try:
124-
kwargs_for_copy = dict(group_id=new_group_id, name=new_name)
125-
new_connection = await self._copy(
124+
kwargs_for_copy = dict(group_id=new_group_id, name=new_name) # noqa: C408
125+
return await self._copy(
126126
Connection.id == connection_id,
127127
**kwargs_for_copy,
128128
)
129129

130-
return new_connection
131-
132130
except IntegrityError as integrity_error:
133131
self._raise_error(integrity_error)
134132

syncmaster/dto/transfers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,15 @@ def _get_file_format(self, file_format: dict) -> CSV | JSONLine | JSON | Excel |
8484
self._rewrite_option_name(file_format, "line_sep", "lineSep")
8585
self._rewrite_option_name(file_format, "include_header", "header")
8686

87-
if file_type == "json" or file_type == "jsonline":
87+
if file_type in {"json", "jsonline"}:
8888
self._rewrite_option_name(file_format, "line_sep", "lineSep")
8989

9090
parser_class = self._format_parsers.get(file_type)
9191
if parser_class is not None:
9292
return parser_class.parse_obj(file_format)
9393

94-
raise ValueError(f"Unknown file type: {file_type}")
94+
msg = f"Unknown file type: {file_type}"
95+
raise ValueError(msg)
9596

9697

9798
@dataclass

syncmaster/dto/transfers_strategy.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ def from_dict(cls, data: dict) -> Strategy:
1818

1919
strategy_type = data.get("type")
2020
if strategy_type not in strategy_classes:
21-
raise ValueError(f"Unknown strategy type: {strategy_type}")
21+
msg = f"Unknown strategy type: {strategy_type}"
22+
raise ValueError(msg)
2223

2324
return strategy_classes[strategy_type](**data)
2425

syncmaster/scheduler/__main__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ async def main():
3434
transfer_job_manager.update_jobs(transfers)
3535

3636
transfer_fetcher.last_updated_at = max(t.updated_at for t in transfers)
37-
logger.info("Scheduler state has been updated. Last updated at: %s", transfer_fetcher.last_updated_at)
37+
logger.info(
38+
"Scheduler state has been updated. Last updated at: %s",
39+
transfer_fetcher.last_updated_at,
40+
)
3841

3942
await asyncio.sleep(settings.scheduler.TRANSFER_FETCHING_TIMEOUT_SECONDS)
4043

syncmaster/scheduler/transfer_fetcher.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ def __init__(self, settings: Settings):
1313
self.last_updated_at = None
1414

1515
async def fetch_updated_jobs(self) -> list[Transfer]:
16-
async with get_async_engine(self.settings) as engine, get_async_session(engine) as session:
16+
async with (
17+
get_async_engine(self.settings) as engine,
18+
get_async_session(engine) as session,
19+
):
1720
query = select(Transfer)
1821
if self.last_updated_at is not None:
1922
query = query.filter(Transfer.updated_at > self.last_updated_at)
2023

2124
result = await session.execute(query)
22-
transfers = result.scalars().all()
23-
24-
return transfers
25+
return result.scalars().all()

syncmaster/scheduler/transfer_job_manager.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ async def remove_orphan_jobs(self) -> None:
5353
all_jobs = self.scheduler.get_jobs()
5454
job_transfer_ids = [int(job.id) for job in all_jobs]
5555

56-
async with get_async_engine(self.settings) as engine, get_async_session(engine) as session:
56+
async with (
57+
get_async_engine(self.settings) as engine,
58+
get_async_session(engine) as session,
59+
):
5760
result = await session.execute(
5861
select(Transfer).where(Transfer.id == any_(job_transfer_ids)), # type: ignore[arg-type]
5962
)
@@ -75,7 +78,10 @@ async def send_job_to_celery(transfer_id: int) -> None: # noqa: WPS602, WPS217
7578
"""
7679
settings = Settings()
7780

78-
async with get_async_engine(settings) as engine, get_async_session(engine) as session:
81+
async with (
82+
get_async_engine(settings) as engine,
83+
get_async_session(engine) as session,
84+
):
7985
unit_of_work = UnitOfWork(session=session, settings=settings)
8086

8187
try:

syncmaster/schemas/v1/connections/oracle.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ class OracleConnectionDataSchema(BaseModel):
2323
additional_params: dict = Field(default_factory=dict)
2424

2525
@model_validator(mode="before")
26+
@classmethod
2627
def validate_connection_identifiers(cls, values):
2728
sid, service_name = values.get("sid"), values.get("service_name")
2829
if sid and service_name:
29-
raise ValueError("You must specify either sid or service_name but not both")
30+
msg = "You must specify either sid or service_name but not both"
31+
raise ValueError(msg)
3032
return values
3133

3234

syncmaster/schemas/v1/groups.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class AddUserSchema(BaseModel):
2222
model_config = ConfigDict(from_attributes=True)
2323

2424
@model_validator(mode="before")
25+
@classmethod
2526
def validate_role(cls, values):
2627
if isinstance(values, dict):
2728
role = values.get("role")
@@ -30,8 +31,9 @@ def validate_role(cls, values):
3031
role = getattr(values, "role", None)
3132

3233
if role and not GroupMemberRole.is_public_role(role):
34+
msg = f"Input should be one of: {GroupMemberRole.public_roles_str()}"
3335
raise ValueError(
34-
f"Input should be one of: {GroupMemberRole.public_roles_str()}",
36+
msg,
3537
)
3638
return values
3739

syncmaster/schemas/v1/transfers/__init__.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,21 +56,25 @@ class CreateTransferSchema(TransferSchema):
5656
def validate_scheduling(cls, value: str | None, info: ValidationInfo):
5757
if not value and info.data.get("is_scheduled"):
5858
# TODO make checking cron string
59-
raise ValueError("If transfer must be scheduled then set schedule")
59+
msg = "If transfer must be scheduled then set schedule"
60+
raise ValueError(msg)
6061
return value or None
6162

6263
@field_validator("strategy_params", mode="after")
6364
@classmethod
6465
def validate_strategy(cls, value: Strategy, info: ValidationInfo):
6566
if isinstance(value, IncrementalStrategy):
6667
if info.data["source_params"].type in ("s3", "hdfs"):
67-
raise ValueError("S3 and HDFS sources do not support incremental strategy for now")
68+
msg = "S3 and HDFS sources do not support incremental strategy for now"
69+
raise ValueError(msg)
6870

6971
source_type = info.data["source_params"].type
70-
if source_type in FILE_CONNECTION_TYPES and value.increment_by not in ("file_modified_since", "file_name"):
71-
raise ValueError(
72-
"Field 'increment_by' must be equal to 'file_modified_since' or 'file_name' for file source types",
73-
)
72+
if source_type in FILE_CONNECTION_TYPES and value.increment_by not in (
73+
"file_modified_since",
74+
"file_name",
75+
):
76+
msg = "Field 'increment_by' must be equal to 'file_modified_since' or 'file_name' for file source types"
77+
raise ValueError(msg)
7478
return value
7579

7680

syncmaster/schemas/v1/transfers/db.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ class DBTransfer(BaseModel):
2727
@classmethod
2828
def _table_name_is_qualified(cls, value):
2929
if not re.match(cls.TABLE_NAME_PATTERN, value):
30-
raise ValueError("Table name should be in format myschema.mytable")
30+
msg = "Table name should be in format myschema.mytable"
31+
raise ValueError(msg)
3132
return value
3233

3334

@@ -66,7 +67,8 @@ class IcebergTransferSourceOrTarget(DBTransfer):
6667
@classmethod
6768
def _table_name_is_qualified(cls, value):
6869
if not re.match(cls.TABLE_NAME_PATTERN, value):
69-
raise ValueError("Table name should be in format myschema.mytable")
70+
msg = "Table name should be in format myschema.mytable"
71+
raise ValueError(msg)
7072
return value
7173

7274

0 commit comments

Comments
 (0)