Untitled
4ae4d
plain_text
02/12/2026 7:29 AM
27.5 KB
13
Indexable
179 files left unchanged
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/city.py:26:12
|
24 | service = CityService(admin)
25 | return_data = await service.get_cities(offset, limit)
26 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/city.py:34:12
|
32 | service = CityService(admin)
33 | return_data = await service.get_city_by_name(name)
34 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/city.py:42:12
|
40 | service = CityService(admin)
41 | return_data = await service.get_city_by_id(city_id)
42 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/event.py:100:12
|
98 | service = EventService(admin)
99 | return_data = await service.get_cities_events(city_id, offset, limit)
100 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/event.py:110:12
|
108 | service = EventService(admin)
109 | return_data = await service.get_by_id(event_id)
110 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/event.py:140:12
|
138 | service = EventService(admin)
139 | return_data = await service.get_users_events(user_id)
140 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/event.py:148:12
|
146 | service = EventService(admin)
147 | return_data = await service.enter_code(body.participation_id, body.bonus_code)
148 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `event` before `return` statement
--> src/backend/app/api/v1/event.py:203:12
|
202 | event = await service.create_event(body)
203 | return event
| ^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/tag.py:35:12
|
33 | service = TagService(admin)
34 | return_data = await service.get_app_tags(offset, limit)
35 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/tag.py:60:12
|
58 | service = TagService(admin)
59 | return_data = await service.get_user_tags(messenger_id)
60 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/user.py:28:12
|
26 | service = UserService(admin)
27 | return_data = await service.insert(dict_data)
28 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `return_data` before `return` statement
--> src/backend/app/api/v1/user.py:58:12
|
56 | messenger_id, body.model_dump(exclude_unset=True)
57 | )
58 | return return_data
| ^^^^^^^^^^^
|
help: Remove unnecessary assignment
C417 Unnecessary `map()` usage (rewrite using a generator expression)
--> src/backend/app/db/models/base.py:22:49
|
20 | columns = {column.name: getattr(self, column.name) for column in self.__table__.columns}
21 | return (
22 | f"<{self.__tablename__}: {', '.join(map(lambda x: f'{x[0]}={x[1]}', columns.items()))}>"
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
23 | )
|
help: Replace `map()` with a generator expression
RET503 Missing explicit `return` at the end of function able to return non-`None` value
--> src/backend/app/dependencies/auth/authorization.py:14:5
|
13 | class AuthorizationService:
14 | / @classmethod
15 | | async def login(
16 | | cls, data: str | dict, role: Literal["admin"], session: AsyncSession
17 | | ) -> TokenData | None:
18 | | if role == "admin":
19 | | return await cls._procces_authorization_admin(data=data, session=session)
| |_____________________________________________________________________________________^
20 |
21 | @classmethod
|
help: Add explicit `return` statement
RET503 Missing explicit `return` at the end of function able to return non-`None` value
--> src/backend/app/dependencies/auth/authorization.py:21:5
|
19 | return await cls._procces_authorization_admin(data=data, session=session)
20 |
21 | / @classmethod
22 | | async def _process_authorization_admin(cls, data: dict, session: AsyncSession):
23 | | admin = await AdminService.get_admin_by_login(session, data["login"])
24 | |
25 | | if Hasher.verify_password(data["password"], admin.password):
26 | | access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)
27 | | refresh_token_expires = timedelta(minutes=settings.REFRESH_TOKEN_EXPIRE_DAYS)
28 | |
29 | | access_token = cls.create_access_token(
30 | | data={"sub": admin.login, "scopes": ["admin"]}, expires_delta=access_token_expires
31 | | )
32 | | refresh_token = cls.create_refresh_token(
33 | | data={"sub": admin.login, "scopes": ["admin"]}, expires_delta=refresh_token_expires
34 | | )
35 | |
36 | | return TokenData(access_token=access_token, refresh_token=refresh_token)
| |____________________________________________________________________________________^
37 |
38 | @staticmethod
|
help: Add explicit `return` statement
RET504 Unnecessary assignment to `encoded_jwt` before `return` statement
--> src/backend/app/dependencies/auth/authorization.py:47:16
|
45 | encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.ALGORITHM)
46 |
47 | return encoded_jwt
| ^^^^^^^^^^^
48 |
49 | @staticmethod
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `encoded_jwt` before `return` statement
--> src/backend/app/dependencies/auth/authorization.py:58:16
|
56 | encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.ALGORITHM)
57 |
58 | return encoded_jwt
| ^^^^^^^^^^^
59 |
60 | @classmethod
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `token_Data` before `return` statement
--> src/backend/app/dependencies/auth/authorization.py:72:16
|
70 | token_Data = TokenData(access_token=new_access_token, refresh_token=new_refresh_token)
71 |
72 | return token_Data
| ^^^^^^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `admin` before `return` statement
--> src/backend/app/services/admin.py:8:16
|
6 | async def get_admin_by_login(cls, sesion: AsyncSession, login: str):
7 | admin = await cls.repository.get_admin_by_login(sesion, login)
8 | return admin
| ^^^^^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `events` before `return` statement
--> src/backend/app/services/event.py:32:20
|
30 | city_id=city_id, offset=offset, limit=limit
31 | )
32 | return events
| ^^^^^^
33 |
34 | async def search_events(self, query: EventSearchQuerySchema):
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `event` before `return` statement
--> src/backend/app/services/event.py:94:20
|
92 | async with self.administrator.start() as admin:
93 | event = await admin.event.get_by_id(event_id)
94 | return event
| ^^^^^
95 |
96 | async def enter_code(self, participation_id: UUID, bonus_code: str):
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `updated_user` before `return` statement
--> src/backend/app/services/event.py:111:20
|
109 | updated_user = await admin.user.add_points(participation.user_id, event.points)
110 |
111 | return updated_user
| ^^^^^^^^^^^^
112 |
113 | async def sign_up(self, data: EventSignUpSchema):
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `participation` before `return` statement
--> src/backend/app/services/event.py:126:20
|
125 | participation = await admin.participation.insert(participation_data)
126 | return participation
| ^^^^^^^^^^^^^
127 |
128 | async def sign_out(self, data: EventSignOutSchema):
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `deleted_participation` before `return` statement
--> src/backend/app/services/event.py:137:20
|
136 | deleted_participation = await admin.participation.delete(participation.id)
137 | return deleted_participation
| ^^^^^^^^^^^^^^^^^^^^^
138 |
139 | async def get_users_events(self, user_id: int):
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `user_events` before `return` statement
--> src/backend/app/services/event.py:144:20
|
142 | user_events = await admin.participation.get_user_participations(user.id)
143 |
144 | return user_events
| ^^^^^^^^^^^
145 |
146 | async def create_event(self, data: EventCreateSchema):
|
help: Remove unnecessary assignment
SIM102 Use a single `if` statement instead of nested `if` statements
--> src/backend/app/services/event.py:197:13
|
195 | tag_ids = patch.pop("app_tag_ids", None)
196 |
197 | / if "points" in patch and patch["points"] is not None:
198 | | if patch["points"] <= 0 or patch["points"] >= 2**31:
| |____________________________________________________________________^
199 | raise BadRequestError("Invalid points value")
|
help: Combine `if` statements using `and`
SIM102 Use a single `if` statement instead of nested `if` statements
--> src/backend/app/services/event.py:235:13
|
233 | is_admin = str(role_val) == "admin"
234 |
235 | / if not is_admin:
236 | | if not event.creator_id or str(event.creator_id) != str(requester.id):
| |______________________________________________________________________________________^
237 | raise BadRequestError("Access denied: only organizer can view participants")
238 | # TODO replace with AuthError
|
help: Combine `if` statements using `and`
SIM102 Use a single `if` statement instead of nested `if` statements
--> src/backend/app/services/report.py:42:13
|
41 | # создавать отчёт: организатор + админ
42 | / if not is_admin:
43 | | if not event.creator_id or str(event.creator_id) != str(requester.id):
| |______________________________________________________________________________________^
44 | raise AuthError("Access denied: only organizer or admin can create report")
|
help: Combine `if` statements using `and`
RET504 Unnecessary assignment to `created` before `return` statement
--> src/backend/app/services/report.py:60:20
|
59 | created = await admin.report.insert(payload)
60 | return created
| ^^^^^^^
61 |
62 | async def get_report(
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `user_tags` before `return` statement
--> src/backend/app/services/tag.py:34:20
|
32 | user_tags = await administrator.user_tag.get_user_tags(user.id)
33 |
34 | return user_tags
| ^^^^^^^^^
35 |
36 | async def sign_up(self, data: AppTagSignUpSchema):
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `user_tag` before `return` statement
--> src/backend/app/services/tag.py:49:20
|
48 | user_tag = await admin.user_tag.insert(user_tag_data)
49 | return user_tag
| ^^^^^^^^
50 |
51 | async def sign_out(self, data: AppTagSignOutSchema):
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `leaderboard_users` before `return` statement
--> src/backend/app/services/user.py:67:20
|
65 | async with self.administrator.start() as administrator:
66 | leaderboard_users = await administrator.user.get_leaderboard(city_id)
67 | return leaderboard_users
| ^^^^^^^^^^^^^^^^^
|
help: Remove unnecessary assignment
RUF013 PEP 484 prohibits implicit `Optional`
--> src/backend/server/gunicorn.py:8:26
|
6 | port: int = 8000,
7 | workers: int = 1,
8 | forwarded_allow_ips: str = None,
| ^^^
9 | keepalive: int = None,
10 | ):
|
help: Convert to `T | None`
RUF013 PEP 484 prohibits implicit `Optional`
--> src/backend/server/gunicorn.py:9:16
|
7 | workers: int = 1,
8 | forwarded_allow_ips: str = None,
9 | keepalive: int = None,
| ^^^
10 | ):
11 | return {
|
help: Convert to `T | None`
C408 Unnecessary `dict()` call (rewrite as a literal)
--> src/bot/core/bot_kit/fsm/context.py:32:23
|
30 | def clear(self) -> None:
31 | self.set_state(None)
32 | self.set_data(dict())
| ^^^^^^
|
help: Rewrite as a literal
RET503 Missing explicit `return` at the end of function able to return non-`None` value
--> src/bot/core/bot_kit/fsm/context.py:35:1
|
35 | / def _get_arg(type_, args):
36 | | for arg in args:
37 | | if isinstance(arg, type_):
38 | | return arg
| |______________________^
|
help: Add explicit `return` statement
RUF013 PEP 484 prohibits implicit `Optional`
--> src/bot/core/bot_kit/router.py:36:32
|
34 | self.handlers: list[Handler] = []
35 |
36 | def message(self, filter_: Callable[[UpdateMessage], bool] = None, state: State = None):
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
37 | if filter_ is None:
|
help: Convert to `T | None`
RET504 Unnecessary assignment to `bot` before `return` statement
--> src/bot/core/config/bootstrap.py:23:12
|
21 | bot.di = di
22 | bot = cast("BotWithDI", bot)
23 | return bot
| ^^^
|
help: Remove unnecessary assignment
RUF022 `__all__` is not sorted
--> src/bot/core/dependencies/__init__.py:21:11
|
19 | ]
20 |
21 | __all__ = [
| ___________^
22 | | "di_factory",
23 | | # Providers
24 | | "PROVIDERS",
25 | | "ReportProvider",
26 | | "ContextProvider",
27 | | "RegistryProvider",
28 | | "CityProvider",
29 | | "UserProvider",
30 | | "EventProvider",
31 | | "TagProvider",
32 | | ]
| |_^
|
help: Apply an isort-style sorting to `__all__`
RUF022 `__all__` is not sorted
--> src/bot/core/handlers/__init__.py:70:11
|
68 | from .volunteer_home import points_leaderboard_handler, volunteer_home_handler
69 |
70 | __all__ = [
| ___________^
71 | | "start_handler",
72 | | "main_menu_handler",
73 | | "volunteer_home_handler",
74 | | "my_profile_handler",
75 | | "ai_assistant_handler",
76 | | "update_user_menu_handler",
77 | | "update_user_name_start",
78 | | "update_user_region_start",
79 | | "update_user_interests_start",
80 | | "profile_tags_toggle_handler",
81 | | "points_menu_handler",
82 | | "points_leaderboard_handler",
83 | | "events_menu_handler",
84 | | "points_page_handler",
85 | | "points_event_open_handler",
86 | | "points_rt",
87 | | "view_by_uuid_start_handler",
88 | | "moderation_menu_handler",
89 | | "all_events_handler",
90 | | "all_events_page_handler",
91 | | "all_events_open_handler",
92 | | "create_event_start_handler",
93 | | "event_tags_toggle_handler",
94 | | "event_view_by_id_start",
95 | | "admin_menu_handler",
96 | | "event_menu_sign_up_handler",
97 | | "event_menu_sign_out_handler",
98 | | "event_menu_enter_code_start_handler",
99 | | "event_menu_delete_handler",
100 | | "event_menu_edit_handler",
101 | | "event_menu_edit_field_handler",
102 | | "event_participants_open_handler",
103 | | "user_events_page_handler",
104 | | "user_events_open_handler",
105 | | "event_user_sign_up_handler",
106 | | "event_user_sign_out_handler",
107 | | "event_user_enter_code_start_handler",
108 | | "noop_handler",
109 | | "reports_export_handler",
110 | | "report_create_start_handler",
111 | | "report_view_handler",
112 | | "my_events_handler",
113 | | "my_events_page_handler",
114 | | "my_events_open_handler",
115 | | "events_filters_apply_handler",
116 | | "events_filters_back_handler",
117 | | "events_filters_not_implemented_handler",
118 | | "events_filters_open_handler",
119 | | "events_filters_reset_handler",
120 | | "events_filters_tags_open_handler",
121 | | "events_filters_tags_toggle_handler",
122 | | "events_filters_city_open_handler",
123 | | "events_filters_city_select_handler",
124 | | "events_filters_mode_open_handler",
125 | | "events_filters_mode_select_handler",
126 | | "part_events_menu_handler",
127 | | "part_events_page_handler",
128 | | # Routers
129 | | "user_events_rt",
130 | | "enter_code_rt",
131 | | "update_user_rt",
132 | | "events_rt",
133 | | "view_by_uuid_rt",
134 | | "report_rt",
135 | | ]
| |_^
|
help: Apply an isort-style sorting to `__all__`
SIM102 Use a single `if` statement instead of nested `if` statements
--> src/bot/core/handlers/moderation.py:1050:5
|
1048 | return
1049 |
1050 | / if field == "bonus_code" and value is not None:
1051 | | if not re.fullmatch(r"^[A-Za-zА-Яа-я0-9]{1,16}$", str(value)):
| |______________________________________________________________________^
1052 | bot.messaging.send_message(
1053 | peer=message.peer,
|
help: Combine `if` statements using `and`
SIM108 Use ternary operator `name = t.get("name") if isinstance(t, dict) else getattr(t, "name", None)` instead of `if`-`else`-block
--> src/bot/core/markups/tags.py:37:9
|
35 | for t in tags or []:
36 | name = None
37 | / if isinstance(t, dict):
38 | | name = t.get("name")
39 | | else:
40 | | name = getattr(t, "name", None)
| |___________________________________________^
41 | if name:
42 | out.append(TagChoice(key=str(name), label=str(name)))
|
help: Replace `if`-`else`-block with `name = t.get("name") if isinstance(t, dict) else getattr(t, "name", None)`
RET504 Unnecessary assignment to `r` before `return` statement
--> utils/seed_demo_users.py:71:12
|
69 | url = f"{BASE}{path}"
70 | r = requests.request(method, url, timeout=TIMEOUT, **kwargs)
71 | return r
| ^
|
help: Remove unnecessary assignment
RET504 Unnecessary assignment to `body` before `return` statement
--> utils/seed_demo_users.py:109:16
|
107 | # при желании можно обновлять firstname/employee_number, но employee_number уникален;
108 | # лучше не трогать существующего пользователя автоматически.
109 | return body
| ^^^^
110 |
111 | if r.status_code != 404:
|
help: Remove unnecessary assignment
RUF046 Value being cast to `int` is already an integer
--> utils/seed_demo_users.py:214:20
|
212 | n_events = len(event_ids)
213 |
214 | min_k = max(1, int(round(n_events * MIN_PCT)))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
215 | max_k = max(1, int(n_events * MAX_PCT)) # floor
216 | if max_k > n_events:
|
help: Remove unnecessary `int` call
Found 45 errors.
No fixes available (41 hidden fixes can be enabled with the `--unsafe-fixes` option).
Editor is loading...
Leave a Comment