skypro-cli-tool 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. skypro_cli_tool-0.2.0/PKG-INFO +33 -0
  2. skypro_cli_tool-0.2.0/README.md +21 -0
  3. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/pyproject.toml +5 -2
  4. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/cli/app.py +8 -0
  5. skypro_cli_tool-0.2.0/src/skypro/cli/commands/__init__.py +4 -0
  6. skypro_cli_tool-0.2.0/src/skypro/cli/commands/initialize.py +36 -0
  7. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/cli/renders/summary_table.py +4 -5
  8. skypro_cli_tool-0.2.0/src/skypro/config/settings.py +127 -0
  9. skypro_cli_tool-0.2.0/src/skypro/logs/skypro.log +107 -0
  10. skypro_cli_tool-0.2.0/src/skypro/logs/skypro.log.1 +108 -0
  11. skypro_cli_tool-0.2.0/src/skypro/logs/skypro.log.2 +101 -0
  12. skypro_cli_tool-0.1.0/PKG-INFO +0 -13
  13. skypro_cli_tool-0.1.0/README.md +0 -1
  14. skypro_cli_tool-0.1.0/src/skypro/cli/commands/__init__.py +0 -3
  15. skypro_cli_tool-0.1.0/src/skypro/config/settings.py +0 -29
  16. skypro_cli_tool-0.1.0/src/skypro/logs/skypro.log +0 -11
  17. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/__init__.py +0 -0
  18. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/cli/__init__.py +0 -0
  19. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/cli/commands/summary.py +0 -0
  20. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/cli/renders/__init__.py +0 -0
  21. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/config/__init__.py +0 -0
  22. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/config/logging.py +0 -0
  23. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/domain/__init__.py +0 -0
  24. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/domain/enums.py +0 -0
  25. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/domain/errors.py +0 -0
  26. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/domain/models.py +0 -0
  27. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/domain/services.py +0 -0
  28. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/__init__.py +0 -0
  29. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/api/__init__.py +0 -0
  30. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/api/base.py +0 -0
  31. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/api/errors.py +0 -0
  32. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/api/skypro/__init__.py +0 -0
  33. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/api/skypro/client.py +0 -0
  34. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/api/skypro/dto.py +0 -0
  35. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/http/__init__.py +0 -0
  36. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/http/client.py +0 -0
  37. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/http/errors.py +0 -0
  38. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/repositories/__init__.py +0 -0
  39. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/repositories/errors.py +0 -0
  40. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/repositories/summary.py +0 -0
  41. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/infra/repositories/work.py +0 -0
  42. /skypro_cli_tool-0.1.0/src/skypro/logs/skypro.log.1 → /skypro_cli_tool-0.2.0/src/skypro/logs/skypro.log.3 +0 -0
  43. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/main.py +0 -0
  44. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/use_cases/__init__.py +0 -0
  45. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/use_cases/get_summary_info.py +0 -0
  46. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/utils.py +0 -0
  47. {skypro_cli_tool-0.1.0 → skypro_cli_tool-0.2.0}/src/skypro/work_prices.json +0 -0
@@ -0,0 +1,33 @@
1
+ Metadata-Version: 2.3
2
+ Name: skypro-cli-tool
3
+ Version: 0.2.0
4
+ Summary: SkyPro cli tool
5
+ Requires-Dist: aiohttp>=3.13.5
6
+ Requires-Dist: httpx>=0.28.1
7
+ Requires-Dist: pydantic>=2.13.3
8
+ Requires-Dist: pydantic-settings[toml]>=2.14.0
9
+ Requires-Dist: typer>=0.25.0
10
+ Requires-Python: >=3.13
11
+ Description-Content-Type: text/markdown
12
+
13
+ # SkyPro cli tool
14
+
15
+ ## How to start
16
+
17
+ Initialise app
18
+
19
+ ```commandline
20
+ sky-cli init
21
+ ```
22
+
23
+ Check money you are earned this month
24
+
25
+ ```commandline
26
+ sky-cli summary
27
+ ```
28
+
29
+ Another month or year
30
+
31
+ ```commandline
32
+ sky-cli summary --month 3 --year 2026
33
+ ```
@@ -0,0 +1,21 @@
1
+ # SkyPro cli tool
2
+
3
+ ## How to start
4
+
5
+ Initialise app
6
+
7
+ ```commandline
8
+ sky-cli init
9
+ ```
10
+
11
+ Check money you are earned this month
12
+
13
+ ```commandline
14
+ sky-cli summary
15
+ ```
16
+
17
+ Another month or year
18
+
19
+ ```commandline
20
+ sky-cli summary --month 3 --year 2026
21
+ ```
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "skypro-cli-tool"
3
- version = "0.1.0"
3
+ version = "0.2.0"
4
4
  description = "SkyPro cli tool"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -8,7 +8,7 @@ dependencies = [
8
8
  "aiohttp>=3.13.5",
9
9
  "httpx>=0.28.1",
10
10
  "pydantic>=2.13.3",
11
- "pydantic-settings>=2.14.0",
11
+ "pydantic-settings[toml]>=2.14.0",
12
12
  "typer>=0.25.0",
13
13
  ]
14
14
 
@@ -59,8 +59,11 @@ preview = true
59
59
  "ANN", # Missing type annotation
60
60
  "S101", # Use of `assert` detected
61
61
  "PLR6301", # Method could be a function, class method, or static method
62
+ "S105", # Possible hardcoded password
63
+ "S106", # Possible hardcoded password
62
64
  "S311", # Standard pseudo-random generators are not suitable for cryptographic purposes
63
65
  "PLR2004", # Magic value used in comparison
66
+ "RUF069", # Unreliable floating point equality comparison
64
67
  ]
65
68
 
66
69
  [tool.ruff.lint.isort]
@@ -7,6 +7,7 @@ from typer import Option
7
7
  from skypro.config.logging import enable_console_logging
8
8
 
9
9
  from . import commands
10
+ from .commands import initialize_settings
10
11
 
11
12
  app = typer.Typer()
12
13
  console = Console()
@@ -23,3 +24,10 @@ def get_summary(
23
24
  if verbose:
24
25
  enable_console_logging(console)
25
26
  asyncio.run(commands.show_summary(console, year, month))
27
+
28
+
29
+ @app.command(name='init')
30
+ def init_settings() -> None:
31
+ """Установка настроек."""
32
+ asyncio.run(initialize_settings(console))
33
+ console.print('[green]OK[/]')
@@ -0,0 +1,4 @@
1
+ from .initialize import initialize_settings
2
+ from .summary import show_summary
3
+
4
+ __all__ = ('initialize_settings', 'show_summary')
@@ -0,0 +1,36 @@
1
+ from rich.console import Console
2
+
3
+ from skypro.config.settings import save_settings, settings
4
+ from skypro.infra.api.errors import ApiError
5
+ from skypro.infra.api.skypro.client import SkyProClient
6
+ from skypro.infra.http.client import HttpClient
7
+ from skypro.infra.http.errors import HttpError
8
+
9
+
10
+ async def initialize_settings(console: Console) -> None:
11
+ while not await is_skypro_credentials_valid():
12
+ if settings.skypro.email:
13
+ console.print('[red]Некорретные данные для skypro[/]')
14
+ else:
15
+ console.print('Укажи данные для подключения к skypro')
16
+
17
+ _set_skypro_settings(console)
18
+
19
+
20
+ async def is_skypro_credentials_valid() -> bool:
21
+ try:
22
+ async with HttpClient() as http_client:
23
+ skypro = SkyProClient(http_client)
24
+ await skypro.login()
25
+ except (HttpError, ApiError):
26
+ return False
27
+
28
+ return True
29
+
30
+
31
+ def _set_skypro_settings(console: Console) -> None:
32
+ email = console.input('Email: ')
33
+ password = console.input('Password: ', password=True)
34
+ settings.skypro.email = email
35
+ settings.skypro.password = password
36
+ save_settings(settings)
@@ -23,22 +23,21 @@ def render_summary_table(
23
23
  table = Table(
24
24
  Column('Тип', style='cyan'),
25
25
  Column('Количество', style='magenta', justify='center'),
26
+ Column('Стоимость', style='magenta', justify='right'),
26
27
  Column('Оплата', style='magenta', justify='right'),
27
28
  title='Статистика работ за месяц',
28
29
  )
29
30
 
30
31
  for item in report:
31
- if not item.quantity:
32
- continue
33
-
34
32
  table.add_row(
35
33
  work_type_translate_map[item.work_type],
36
34
  str(item.quantity),
37
35
  format_price(item.price),
36
+ format_price(item.total),
38
37
  )
39
38
 
40
39
  table.add_section()
41
- table.add_row('Итого', '', format_price(total))
42
- table.add_row('После уплаты налога', '', format_price(total_after_tax))
40
+ table.add_row('Итого', '', '', format_price(total))
41
+ table.add_row('После уплаты налога', '', '', format_price(total_after_tax))
43
42
 
44
43
  return table
@@ -0,0 +1,127 @@
1
+ from pathlib import Path
2
+ from typing import Literal
3
+
4
+ from pydantic import BaseModel, Field
5
+ from pydantic_settings import (
6
+ BaseSettings,
7
+ PydanticBaseSettingsSource,
8
+ SettingsConfigDict,
9
+ TomlConfigSettingsSource,
10
+ )
11
+
12
+ BASE_DIR = Path(__file__).resolve().parent.parent
13
+
14
+ HOME_PATH = Path.home() / '.skypro'
15
+ SETTINGS_FILE_PATH = HOME_PATH / 'settings.toml'
16
+
17
+
18
+ class SkyProSettings(BaseModel):
19
+ email: str = ''
20
+ password: str = ''
21
+
22
+
23
+ class Settings(BaseSettings):
24
+ tax_percent: float = 6.0
25
+ default_request_timeout: int = 3
26
+ log_level: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] = 'INFO'
27
+
28
+ skypro: SkyProSettings = Field(default_factory=SkyProSettings)
29
+
30
+ model_config = SettingsConfigDict(
31
+ env_nested_delimiter='__',
32
+ toml_file=SETTINGS_FILE_PATH,
33
+ extra='ignore',
34
+ )
35
+
36
+ @classmethod
37
+ def settings_customise_sources(
38
+ cls,
39
+ settings_cls: type[BaseSettings],
40
+ init_settings: PydanticBaseSettingsSource,
41
+ env_settings: PydanticBaseSettingsSource,
42
+ dotenv_settings: PydanticBaseSettingsSource,
43
+ file_secret_settings: PydanticBaseSettingsSource,
44
+ ) -> tuple[PydanticBaseSettingsSource, ...]:
45
+ return (
46
+ init_settings,
47
+ env_settings,
48
+ TomlConfigSettingsSource(settings_cls),
49
+ dotenv_settings,
50
+ file_secret_settings,
51
+ )
52
+
53
+ @classmethod
54
+ def from_toml_file(cls, file_path: Path) -> 'Settings':
55
+ original_toml_file = cls.model_config.get('toml_file')
56
+ cls.model_config['toml_file'] = file_path
57
+ try:
58
+ return cls()
59
+ finally:
60
+ cls.model_config['toml_file'] = original_toml_file
61
+
62
+
63
+ def _serialize_settings(current_settings: Settings) -> str:
64
+ return _dump_toml(current_settings.model_dump())
65
+
66
+
67
+ def _dump_toml(data: dict[str, object]) -> str:
68
+ root_lines: list[str] = []
69
+ table_chunks: list[str] = []
70
+
71
+ for key, value in data.items():
72
+ if isinstance(value, dict):
73
+ table_body = _dump_toml_table(value)
74
+ table_chunks.append(f'[{key}]\n{table_body}')
75
+ continue
76
+
77
+ root_lines.append(f'{key} = {_format_toml_value(value)}')
78
+
79
+ chunks = ['\n'.join(root_lines)] if root_lines else []
80
+ chunks.extend(table_chunks)
81
+ return '\n\n'.join(chunks) + '\n'
82
+
83
+
84
+ def _dump_toml_table(data: dict[str, object]) -> str:
85
+ lines = [f'{key} = {_format_toml_value(value)}' for key, value in data.items()]
86
+ return '\n'.join(lines)
87
+
88
+
89
+ def _format_toml_value(value: object) -> str:
90
+ if isinstance(value, str):
91
+ escaped_value = value.replace('\\', '\\\\').replace('"', '\\"')
92
+ return f'"{escaped_value}"'
93
+ if isinstance(value, bool):
94
+ return str(value).lower()
95
+ return str(value)
96
+
97
+
98
+ def get_default_settings() -> Settings:
99
+ return Settings.model_construct(
100
+ **{
101
+ field_name: field_info.get_default(call_default_factory=True)
102
+ for field_name, field_info in Settings.model_fields.items()
103
+ }
104
+ )
105
+
106
+
107
+ def save_settings(
108
+ current_settings: Settings, file_path: Path = SETTINGS_FILE_PATH
109
+ ) -> None:
110
+ file_path.parent.mkdir(mode=0o700, exist_ok=True)
111
+ file_path.write_text(_serialize_settings(current_settings), encoding='utf-8')
112
+
113
+
114
+ def ensure_settings_file(file_path: Path = SETTINGS_FILE_PATH) -> None:
115
+ if file_path.exists():
116
+ return
117
+
118
+ save_settings(get_default_settings(), file_path)
119
+
120
+
121
+ def get_settings(file_path: Path = SETTINGS_FILE_PATH) -> Settings:
122
+ file_path.parent.mkdir(mode=0o700, exist_ok=True)
123
+ ensure_settings_file(file_path)
124
+ return Settings.from_toml_file(file_path)
125
+
126
+
127
+ settings = get_settings()
@@ -0,0 +1,107 @@
1
+ 2026-05-07 06:25:48 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
2
+ 2026-05-07 06:25:48 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
3
+ 2026-05-07 06:25:49 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
4
+ 2026-05-07 06:25:49 - INFO - SkyPro authentication successful
5
+ 2026-05-07 06:26:15 - INFO - Authenticating in SkyPro
6
+ 2026-05-07 06:26:15 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
7
+ 2026-05-07 06:26:16 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
8
+ 2026-05-07 06:26:16 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
9
+ 2026-05-07 06:26:16 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
10
+ 2026-05-07 06:26:16 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
11
+ 2026-05-07 06:26:16 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
12
+ 2026-05-07 06:26:16 - INFO - SkyPro authentication successful
13
+ 2026-05-07 06:26:49 - INFO - Authenticating in SkyPro
14
+ 2026-05-07 06:26:49 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
15
+ 2026-05-07 06:26:49 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
16
+ 2026-05-07 06:26:49 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
17
+ 2026-05-07 06:26:50 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
18
+ 2026-05-07 06:26:50 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
19
+ 2026-05-07 06:26:50 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
20
+ 2026-05-07 06:26:57 - INFO - Authenticating in SkyPro
21
+ 2026-05-07 06:26:57 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
22
+ 2026-05-07 06:26:58 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
23
+ 2026-05-07 06:26:58 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
24
+ 2026-05-07 06:26:58 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
25
+ 2026-05-07 06:26:58 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
26
+ 2026-05-07 06:26:58 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
27
+ 2026-05-07 06:26:58 - INFO - SkyPro authentication successful
28
+ 2026-05-07 06:27:04 - INFO - Authenticating in SkyPro
29
+ 2026-05-07 06:27:04 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
30
+ 2026-05-07 06:27:04 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
31
+ 2026-05-07 06:27:04 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
32
+ 2026-05-07 06:27:04 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
33
+ 2026-05-07 06:27:04 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
34
+ 2026-05-07 06:27:05 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
35
+ 2026-05-07 06:27:05 - INFO - SkyPro authentication successful
36
+ 2026-05-07 06:46:25 - INFO - Authenticating in SkyPro
37
+ 2026-05-07 06:46:25 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
38
+ 2026-05-07 06:46:26 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
39
+ 2026-05-07 06:46:26 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
40
+ 2026-05-07 06:46:26 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
41
+ 2026-05-07 06:46:26 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
42
+ 2026-05-07 06:46:26 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
43
+ 2026-05-07 06:47:08 - INFO - Authenticating in SkyPro
44
+ 2026-05-07 06:47:08 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
45
+ 2026-05-07 06:47:10 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
46
+ 2026-05-07 06:47:10 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
47
+ 2026-05-07 06:47:10 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
48
+ 2026-05-07 06:47:10 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
49
+ 2026-05-07 06:47:10 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
50
+ 2026-05-07 06:47:56 - INFO - Authenticating in SkyPro
51
+ 2026-05-07 06:47:56 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
52
+ 2026-05-07 06:47:56 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
53
+ 2026-05-07 06:47:56 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
54
+ 2026-05-07 06:47:56 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
55
+ 2026-05-07 06:47:56 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
56
+ 2026-05-07 06:47:57 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
57
+ 2026-05-07 06:48:05 - INFO - Authenticating in SkyPro
58
+ 2026-05-07 06:48:05 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
59
+ 2026-05-07 06:48:06 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
60
+ 2026-05-07 06:48:06 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
61
+ 2026-05-07 06:48:06 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
62
+ 2026-05-07 06:48:06 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
63
+ 2026-05-07 06:48:06 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
64
+ 2026-05-07 06:48:06 - INFO - SkyPro authentication successful
65
+ 2026-05-07 06:48:06 - INFO - Authenticating in SkyPro
66
+ 2026-05-07 06:48:06 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
67
+ 2026-05-07 06:48:06 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
68
+ 2026-05-07 06:48:06 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
69
+ 2026-05-07 06:48:07 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
70
+ 2026-05-07 06:48:07 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
71
+ 2026-05-07 06:48:07 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
72
+ 2026-05-07 06:48:07 - INFO - SkyPro authentication successful
73
+ 2026-05-07 06:48:50 - INFO - Authenticating in SkyPro
74
+ 2026-05-07 06:48:50 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
75
+ 2026-05-07 06:48:51 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
76
+ 2026-05-07 06:48:51 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
77
+ 2026-05-07 06:48:51 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
78
+ 2026-05-07 06:48:51 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
79
+ 2026-05-07 06:48:51 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
80
+ 2026-05-07 06:48:51 - INFO - SkyPro authentication successful
81
+ 2026-05-07 06:48:51 - INFO - Authenticating in SkyPro
82
+ 2026-05-07 06:48:51 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
83
+ 2026-05-07 06:48:52 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
84
+ 2026-05-07 06:48:52 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
85
+ 2026-05-07 06:48:52 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
86
+ 2026-05-07 06:48:52 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
87
+ 2026-05-07 06:48:52 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
88
+ 2026-05-07 06:48:52 - INFO - SkyPro authentication successful
89
+ 2026-05-07 06:50:41 - INFO - Authenticating in SkyPro
90
+ 2026-05-07 06:50:41 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
91
+ 2026-05-07 06:50:41 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
92
+ 2026-05-07 06:50:41 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
93
+ 2026-05-07 06:50:41 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
94
+ 2026-05-07 06:50:41 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
95
+ 2026-05-07 06:50:42 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
96
+ 2026-05-07 06:50:42 - INFO - SkyPro authentication successful
97
+ 2026-05-07 06:50:50 - INFO - Authenticating in SkyPro
98
+ 2026-05-07 06:50:50 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
99
+ 2026-05-07 06:50:51 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
100
+ 2026-05-07 06:50:51 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
101
+ 2026-05-07 06:50:51 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
102
+ 2026-05-07 06:50:51 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
103
+ 2026-05-07 06:50:51 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
104
+ 2026-05-07 06:50:51 - INFO - SkyPro authentication successful
105
+ 2026-05-07 06:50:51 - INFO - Fetching account data from 2026-05-01 to 2026-05-31
106
+ 2026-05-07 06:50:51 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31
107
+ 2026-05-07 06:50:52 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31 -> 200
@@ -0,0 +1,108 @@
1
+ 2026-05-07 05:49:29 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
2
+ 2026-05-07 05:55:35 - INFO - Authenticating in SkyPro
3
+ 2026-05-07 05:55:35 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
4
+ 2026-05-07 05:55:35 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
5
+ 2026-05-07 05:55:35 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
6
+ 2026-05-07 05:55:36 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
7
+ 2026-05-07 05:55:36 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
8
+ 2026-05-07 05:55:36 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
9
+ 2026-05-07 05:56:07 - INFO - Authenticating in SkyPro
10
+ 2026-05-07 05:56:07 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
11
+ 2026-05-07 05:56:07 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
12
+ 2026-05-07 05:56:07 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
13
+ 2026-05-07 05:56:08 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
14
+ 2026-05-07 05:56:08 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
15
+ 2026-05-07 05:56:08 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
16
+ 2026-05-07 05:57:58 - INFO - Authenticating in SkyPro
17
+ 2026-05-07 05:57:58 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
18
+ 2026-05-07 05:57:59 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
19
+ 2026-05-07 05:57:59 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
20
+ 2026-05-07 05:57:59 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
21
+ 2026-05-07 05:57:59 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
22
+ 2026-05-07 05:57:59 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
23
+ 2026-05-07 06:01:48 - INFO - Authenticating in SkyPro
24
+ 2026-05-07 06:01:48 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
25
+ 2026-05-07 06:01:48 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
26
+ 2026-05-07 06:01:48 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
27
+ 2026-05-07 06:01:49 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
28
+ 2026-05-07 06:01:49 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
29
+ 2026-05-07 06:01:49 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
30
+ 2026-05-07 06:02:08 - INFO - Authenticating in SkyPro
31
+ 2026-05-07 06:02:08 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
32
+ 2026-05-07 06:02:08 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
33
+ 2026-05-07 06:02:08 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
34
+ 2026-05-07 06:02:08 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
35
+ 2026-05-07 06:02:08 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
36
+ 2026-05-07 06:02:08 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
37
+ 2026-05-07 06:02:27 - INFO - Authenticating in SkyPro
38
+ 2026-05-07 06:02:27 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
39
+ 2026-05-07 06:02:28 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
40
+ 2026-05-07 06:02:28 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
41
+ 2026-05-07 06:02:28 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
42
+ 2026-05-07 06:02:28 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
43
+ 2026-05-07 06:02:29 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
44
+ 2026-05-07 06:03:29 - INFO - Authenticating in SkyPro
45
+ 2026-05-07 06:03:29 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
46
+ 2026-05-07 06:03:29 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
47
+ 2026-05-07 06:03:29 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
48
+ 2026-05-07 06:03:30 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
49
+ 2026-05-07 06:03:30 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
50
+ 2026-05-07 06:03:30 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
51
+ 2026-05-07 06:03:57 - INFO - Authenticating in SkyPro
52
+ 2026-05-07 06:03:57 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
53
+ 2026-05-07 06:03:57 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
54
+ 2026-05-07 06:03:57 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
55
+ 2026-05-07 06:03:58 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
56
+ 2026-05-07 06:03:58 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
57
+ 2026-05-07 06:03:58 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
58
+ 2026-05-07 06:04:08 - INFO - Authenticating in SkyPro
59
+ 2026-05-07 06:04:08 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
60
+ 2026-05-07 06:04:08 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
61
+ 2026-05-07 06:04:08 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
62
+ 2026-05-07 06:04:08 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
63
+ 2026-05-07 06:04:08 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
64
+ 2026-05-07 06:04:08 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
65
+ 2026-05-07 06:18:14 - INFO - Authenticating in SkyPro
66
+ 2026-05-07 06:18:14 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
67
+ 2026-05-07 06:19:08 - INFO - Authenticating in SkyPro
68
+ 2026-05-07 06:19:08 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
69
+ 2026-05-07 06:19:08 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
70
+ 2026-05-07 06:19:08 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
71
+ 2026-05-07 06:19:09 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
72
+ 2026-05-07 06:19:09 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
73
+ 2026-05-07 06:19:09 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
74
+ 2026-05-07 06:19:19 - INFO - Authenticating in SkyPro
75
+ 2026-05-07 06:19:19 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
76
+ 2026-05-07 06:19:20 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
77
+ 2026-05-07 06:19:20 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
78
+ 2026-05-07 06:19:20 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
79
+ 2026-05-07 06:19:20 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
80
+ 2026-05-07 06:19:20 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
81
+ 2026-05-07 06:19:20 - INFO - SkyPro authentication successful
82
+ 2026-05-07 06:19:24 - INFO - Authenticating in SkyPro
83
+ 2026-05-07 06:19:24 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
84
+ 2026-05-07 06:19:25 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
85
+ 2026-05-07 06:19:25 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
86
+ 2026-05-07 06:19:25 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
87
+ 2026-05-07 06:19:25 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
88
+ 2026-05-07 06:19:25 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
89
+ 2026-05-07 06:22:18 - INFO - Authenticating in SkyPro
90
+ 2026-05-07 06:22:18 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
91
+ 2026-05-07 06:22:19 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
92
+ 2026-05-07 06:22:19 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
93
+ 2026-05-07 06:22:19 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
94
+ 2026-05-07 06:22:19 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
95
+ 2026-05-07 06:22:20 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
96
+ 2026-05-07 06:22:20 - INFO - SkyPro authentication successful
97
+ 2026-05-07 06:22:26 - INFO - Authenticating in SkyPro
98
+ 2026-05-07 06:22:26 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
99
+ 2026-05-07 06:22:26 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
100
+ 2026-05-07 06:22:26 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
101
+ 2026-05-07 06:22:27 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
102
+ 2026-05-07 06:22:27 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
103
+ 2026-05-07 06:22:27 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
104
+ 2026-05-07 06:22:27 - INFO - SkyPro authentication successful
105
+ 2026-05-07 06:25:47 - INFO - Authenticating in SkyPro
106
+ 2026-05-07 06:25:47 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
107
+ 2026-05-07 06:25:48 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
108
+ 2026-05-07 06:25:48 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
@@ -0,0 +1,101 @@
1
+ 2026-05-04 23:05:39 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
2
+ 2026-05-04 23:05:39 - WARNING - Executing <Task pending name='Task-3' coro=<get_summary() running at /Users/vadim/PycharmProjects/skypro-money/src/skypro/infra/repositories/summary.py:18> cb=[gather.<locals>._done_callback() at /Users/vadim/.pyenv/versions/3.13.2/lib/python3.13/asyncio/tasks.py:820] created at /Users/vadim/.pyenv/versions/3.13.2/lib/python3.13/asyncio/tasks.py:748> took 0.234 seconds
3
+ 2026-05-04 23:05:39 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
4
+ 2026-05-04 23:05:39 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
5
+ 2026-05-04 23:05:40 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
6
+ 2026-05-04 23:05:40 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
7
+ 2026-05-04 23:05:40 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
8
+ 2026-05-04 23:05:40 - INFO - SkyPro authentication successful
9
+ 2026-05-04 23:05:40 - INFO - Fetching account data from 2026-04-01 to 2026-04-30
10
+ 2026-05-04 23:05:40 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-04-01&end_date=2026-04-30
11
+ 2026-05-04 23:05:40 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-04-01&end_date=2026-04-30 -> 200
12
+ 2026-05-07 05:40:24 - INFO - Authenticating in SkyPro
13
+ 2026-05-07 05:40:24 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
14
+ 2026-05-07 05:40:25 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
15
+ 2026-05-07 05:40:25 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
16
+ 2026-05-07 05:40:25 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
17
+ 2026-05-07 05:40:25 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
18
+ 2026-05-07 05:40:26 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
19
+ 2026-05-07 05:40:26 - INFO - SkyPro authentication successful
20
+ 2026-05-07 05:40:26 - INFO - Fetching account data from 2026-05-01 to 2026-05-31
21
+ 2026-05-07 05:40:26 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31
22
+ 2026-05-07 05:40:26 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31 -> 200
23
+ 2026-05-07 05:41:13 - INFO - Authenticating in SkyPro
24
+ 2026-05-07 05:41:13 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
25
+ 2026-05-07 05:41:14 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
26
+ 2026-05-07 05:41:14 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
27
+ 2026-05-07 05:41:14 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
28
+ 2026-05-07 05:41:14 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
29
+ 2026-05-07 05:41:14 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
30
+ 2026-05-07 05:41:14 - INFO - SkyPro authentication successful
31
+ 2026-05-07 05:41:14 - INFO - Fetching account data from 2026-05-01 to 2026-05-31
32
+ 2026-05-07 05:41:14 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31
33
+ 2026-05-07 05:41:15 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31 -> 200
34
+ 2026-05-07 05:41:35 - INFO - Authenticating in SkyPro
35
+ 2026-05-07 05:41:35 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
36
+ 2026-05-07 05:41:35 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
37
+ 2026-05-07 05:41:35 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
38
+ 2026-05-07 05:41:36 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
39
+ 2026-05-07 05:41:36 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
40
+ 2026-05-07 05:41:36 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
41
+ 2026-05-07 05:41:36 - INFO - SkyPro authentication successful
42
+ 2026-05-07 05:41:36 - INFO - Fetching account data from 2026-05-01 to 2026-05-31
43
+ 2026-05-07 05:41:36 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31
44
+ 2026-05-07 05:41:36 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31 -> 200
45
+ 2026-05-07 05:42:23 - INFO - Authenticating in SkyPro
46
+ 2026-05-07 05:42:23 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
47
+ 2026-05-07 05:42:24 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
48
+ 2026-05-07 05:42:24 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
49
+ 2026-05-07 05:42:24 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
50
+ 2026-05-07 05:42:24 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
51
+ 2026-05-07 05:42:24 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
52
+ 2026-05-07 05:42:24 - INFO - SkyPro authentication successful
53
+ 2026-05-07 05:42:24 - INFO - Fetching account data from 2026-05-01 to 2026-05-31
54
+ 2026-05-07 05:42:24 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31
55
+ 2026-05-07 05:42:25 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-05-01&end_date=2026-05-31 -> 200
56
+ 2026-05-07 05:47:43 - INFO - Authenticating in SkyPro
57
+ 2026-05-07 05:47:43 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
58
+ 2026-05-07 05:47:44 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
59
+ 2026-05-07 05:47:44 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
60
+ 2026-05-07 05:47:44 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
61
+ 2026-05-07 05:47:44 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
62
+ 2026-05-07 05:47:44 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
63
+ 2026-05-07 05:47:44 - INFO - SkyPro authentication successful
64
+ 2026-05-07 05:47:54 - INFO - Authenticating in SkyPro
65
+ 2026-05-07 05:47:54 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
66
+ 2026-05-07 05:47:55 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
67
+ 2026-05-07 05:47:55 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
68
+ 2026-05-07 05:47:55 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
69
+ 2026-05-07 05:47:55 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
70
+ 2026-05-07 05:47:55 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
71
+ 2026-05-07 05:47:55 - INFO - SkyPro authentication successful
72
+ 2026-05-07 05:48:16 - INFO - Authenticating in SkyPro
73
+ 2026-05-07 05:48:16 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
74
+ 2026-05-07 05:48:16 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
75
+ 2026-05-07 05:48:16 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
76
+ 2026-05-07 05:48:16 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
77
+ 2026-05-07 05:48:16 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
78
+ 2026-05-07 05:48:16 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
79
+ 2026-05-07 05:48:16 - INFO - SkyPro authentication successful
80
+ 2026-05-07 05:48:41 - INFO - Authenticating in SkyPro
81
+ 2026-05-07 05:48:41 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
82
+ 2026-05-07 05:48:42 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
83
+ 2026-05-07 05:48:42 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
84
+ 2026-05-07 05:48:43 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
85
+ 2026-05-07 05:48:43 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
86
+ 2026-05-07 05:48:43 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
87
+ 2026-05-07 05:48:43 - INFO - SkyPro authentication successful
88
+ 2026-05-07 05:48:56 - INFO - Authenticating in SkyPro
89
+ 2026-05-07 05:48:56 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
90
+ 2026-05-07 05:48:56 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
91
+ 2026-05-07 05:48:56 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
92
+ 2026-05-07 05:48:56 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
93
+ 2026-05-07 05:48:56 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
94
+ 2026-05-07 05:48:57 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
95
+ 2026-05-07 05:48:57 - INFO - SkyPro authentication successful
96
+ 2026-05-07 05:49:28 - INFO - Authenticating in SkyPro
97
+ 2026-05-07 05:49:28 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
98
+ 2026-05-07 05:49:28 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
99
+ 2026-05-07 05:49:28 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
100
+ 2026-05-07 05:49:28 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
101
+ 2026-05-07 05:49:28 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
@@ -1,13 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: skypro-cli-tool
3
- Version: 0.1.0
4
- Summary: SkyPro cli tool
5
- Requires-Dist: aiohttp>=3.13.5
6
- Requires-Dist: httpx>=0.28.1
7
- Requires-Dist: pydantic>=2.13.3
8
- Requires-Dist: pydantic-settings>=2.14.0
9
- Requires-Dist: typer>=0.25.0
10
- Requires-Python: >=3.13
11
- Description-Content-Type: text/markdown
12
-
13
- # SkyPro cli tool
@@ -1 +0,0 @@
1
- # SkyPro cli tool
@@ -1,3 +0,0 @@
1
- from .summary import show_summary
2
-
3
- __all__ = ('show_summary',)
@@ -1,29 +0,0 @@
1
- from pathlib import Path
2
- from typing import Literal
3
-
4
- from pydantic import BaseModel, Field
5
- from pydantic_settings import BaseSettings, SettingsConfigDict
6
-
7
- BASE_DIR = Path(__file__).resolve().parent.parent
8
-
9
-
10
- class SkyProSettings(BaseModel):
11
- email: str
12
- password: str
13
-
14
-
15
- class Settings(BaseSettings):
16
- tax_percent: float = 6.0
17
- default_request_timeout: int = 3
18
- log_level: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] = 'INFO'
19
-
20
- skypro: SkyProSettings = Field(default_factory=SkyProSettings)
21
-
22
- model_config = SettingsConfigDict(
23
- env_nested_delimiter='__',
24
- env_file='.env',
25
- extra='ignore',
26
- )
27
-
28
-
29
- settings = Settings()
@@ -1,11 +0,0 @@
1
- 2026-05-04 23:05:39 - INFO - HTTP request: GET https://operation-planning.sky.pro/careusers/login/
2
- 2026-05-04 23:05:39 - WARNING - Executing <Task pending name='Task-3' coro=<get_summary() running at /Users/vadim/PycharmProjects/skypro-money/src/skypro/infra/repositories/summary.py:18> cb=[gather.<locals>._done_callback() at /Users/vadim/.pyenv/versions/3.13.2/lib/python3.13/asyncio/tasks.py:820] created at /Users/vadim/.pyenv/versions/3.13.2/lib/python3.13/asyncio/tasks.py:748> took 0.234 seconds
3
- 2026-05-04 23:05:39 - INFO - HTTP response: GET https://operation-planning.sky.pro/careusers/login/ -> 200
4
- 2026-05-04 23:05:39 - INFO - HTTP request: POST https://operation-planning.sky.pro/careusers/login/
5
- 2026-05-04 23:05:40 - INFO - HTTP response: POST https://operation-planning.sky.pro/careusers/login/ -> 302
6
- 2026-05-04 23:05:40 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/
7
- 2026-05-04 23:05:40 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/ -> 200
8
- 2026-05-04 23:05:40 - INFO - SkyPro authentication successful
9
- 2026-05-04 23:05:40 - INFO - Fetching account data from 2026-04-01 to 2026-04-30
10
- 2026-05-04 23:05:40 - INFO - HTTP request: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-04-01&end_date=2026-04-30
11
- 2026-05-04 23:05:40 - INFO - HTTP response: GET https://operation-planning.sky.pro/mentor-cabinet/api/data/?start_date=2026-04-01&end_date=2026-04-30 -> 200