commit-maker 0.1.2__py3-none-any.whl → 0.2.1__py3-none-any.whl

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.
commit_maker/main.py CHANGED
@@ -9,25 +9,7 @@ import urllib
9
9
  import urllib.request
10
10
 
11
11
  # Константы
12
- mistral_api_key = os.environ["MISTRAL_API_KEY"]
13
-
14
- # Для цветных логов
15
- COLOR_RED = "\033[31m"
16
- COLOR_GREEN = "\033[32m"
17
- COLOR_YELLOW = "\033[33m"
18
- COLOR_BLUE = "\033[94m"
19
- COLOR_MAGENTA = "\033[95m"
20
- COLOR_CYAN = "\033[96m"
21
- COLOR_RESET = "\033[0m"
22
- COLORS_DICT = {
23
- "red": COLOR_RED,
24
- "green": COLOR_GREEN,
25
- "yellow": COLOR_YELLOW,
26
- "blue": COLOR_BLUE,
27
- "magenta": COLOR_MAGENTA,
28
- "cyan": COLOR_CYAN,
29
- "reset": COLOR_RESET,
30
- }
12
+ mistral_api_key = os.environ.get("MISTRAL_API_KEY")
31
13
 
32
14
  # Парсер параметров
33
15
  parser = argparse.ArgumentParser(
@@ -48,9 +30,9 @@ parser.add_argument(
48
30
  "-m",
49
31
  "--max-symbols",
50
32
  type=int,
51
- default=250,
33
+ default=200,
52
34
  metavar="[max_symbols]",
53
- help="Длина сообщения коммита. Defaults to 150",
35
+ help="Длина сообщения коммита. Defaults to 200",
54
36
  )
55
37
  parser.add_argument(
56
38
  "-M",
@@ -67,22 +49,15 @@ parser.add_argument(
67
49
  help="Запуск с выводом сообщения на основе зайстейдженных "
68
50
  "изменений, без создания коммита",
69
51
  )
70
-
71
- # Парсинг аргументов
72
- parsed_args = parser.parse_args()
73
- use_local_models = parsed_args.local_models
74
- max_symbols = parsed_args.max_symbols
75
- model = parsed_args.model
76
- dry_run = parsed_args.dry_run
77
-
78
- # Промпт для ИИ
79
- prompt_for_ai = f"""Привет! Ты составитель коммитов для git.
80
- Сгенерируй коммит-месседж на РУССКОМ языке, который:
81
- 1. Точно отражает суть изменений
82
- 2. Не превышает {max_symbols} символов
83
- Опирайся на данные от 'git status' и 'git diff'.
84
- В ответ на это сообщение тебе нужно предоставить
85
- ТОЛЬКО коммит. Пиши просто обычный текст, без markdown!"""
52
+ parser.add_argument(
53
+ "-t",
54
+ "--temperature",
55
+ default=1.0,
56
+ type=float,
57
+ help="Температура модели при создании месседжа.\
58
+ Находится на отрезке [0.0, 1.5]. Defaults to 1.0",
59
+ metavar="[temperature]",
60
+ )
86
61
 
87
62
 
88
63
  # Класс для использования API Mistral AI
@@ -252,7 +227,22 @@ def colored(
252
227
  `print(colored(string='Success!', color='green'))` # Выводит 'Success!'
253
228
  зеленого цвета
254
229
  """
255
- global COLORS_DICT
230
+ COLOR_RED = "\033[31m"
231
+ COLOR_GREEN = "\033[32m"
232
+ COLOR_YELLOW = "\033[33m"
233
+ COLOR_BLUE = "\033[94m"
234
+ COLOR_MAGENTA = "\033[95m"
235
+ COLOR_CYAN = "\033[96m"
236
+ COLOR_RESET = "\033[0m"
237
+ COLORS_DICT = {
238
+ "red": COLOR_RED,
239
+ "green": COLOR_GREEN,
240
+ "yellow": COLOR_YELLOW,
241
+ "blue": COLOR_BLUE,
242
+ "magenta": COLOR_MAGENTA,
243
+ "cyan": COLOR_CYAN,
244
+ "reset": COLOR_RESET,
245
+ }
256
246
  return (
257
247
  bold(f"{COLORS_DICT[color]}{string}{COLORS_DICT['reset']}")
258
248
  if text_bold
@@ -264,8 +254,30 @@ def colored(
264
254
 
265
255
 
266
256
  def main() -> None:
267
- global mistral_api_key, prompt_for_ai, use_local_models, model, dry_run
257
+ # Парсинг аргументов
258
+ parsed_args = parser.parse_args()
259
+ use_local_models = parsed_args.local_models
260
+ max_symbols = parsed_args.max_symbols
261
+ model = parsed_args.model
262
+ dry_run = parsed_args.dry_run
263
+ temperature = parsed_args.temperature
264
+
265
+ # Промпт для ИИ
266
+ prompt_for_ai = f"""Привет! Ты составитель коммитов для git.
267
+ Сгенерируй коммит-месседж на РУССКОМ языке, который:
268
+ 1. Точно отражает суть изменений
269
+ 2. Не превышает {max_symbols} символов
270
+ Опирайся на данные от 'git status' и 'git diff'.
271
+ В ответ на это сообщение тебе нужно предоставить
272
+ ТОЛЬКО коммит. Пиши просто обычный текст, без markdown!"""
273
+
268
274
  try:
275
+ if not use_local_models and not mistral_api_key:
276
+ print(
277
+ colored("Не найден MISTRAL_API_KEY для работы с API!", "red")
278
+ )
279
+ return
280
+
269
281
  # Получаем версию git, если он есть
270
282
  git_version = subprocess.run( # noqa
271
283
  ["git", "--version"],
@@ -274,20 +286,23 @@ def main() -> None:
274
286
  encoding="utf-8",
275
287
  ).stdout
276
288
 
277
- # Получаем список моделей из Ollama, если Ollama есть
278
- ollama_list_of_models = (
279
- subprocess.run(
280
- ["ollama", "ls"],
281
- capture_output=True,
282
- text=True,
283
- encoding="utf-8",
289
+ if use_local_models:
290
+ # Получаем список моделей из Ollama, если Ollama есть
291
+ ollama_list_of_models = (
292
+ subprocess.run(
293
+ ["ollama", "ls"],
294
+ capture_output=True,
295
+ text=True,
296
+ encoding="utf-8",
297
+ )
298
+ .stdout.strip()
299
+ .split("\n")
284
300
  )
285
- .stdout.strip()
286
- .split("\n")
287
- )
288
- ollama_list_of_models = [
289
- i.split()[0] for i in ollama_list_of_models[1:]
290
- ]
301
+ ollama_list_of_models = [
302
+ i.split()[0] for i in ollama_list_of_models[1:]
303
+ ]
304
+ else:
305
+ ollama_list_of_models = 0
291
306
 
292
307
  # Обработка отсутствия ollama
293
308
  if not ollama_list_of_models and use_local_models:
@@ -409,8 +424,6 @@ def main() -> None:
409
424
  ):
410
425
  subprocess.run(
411
426
  ["git", "add", "-A"],
412
- capture_output=True,
413
- encoding="utf-8",
414
427
  )
415
428
  else:
416
429
  print(
@@ -464,7 +477,7 @@ def main() -> None:
464
477
  + git_status.stdout
465
478
  + "Git diff: "
466
479
  + git_diff.stdout,
467
- temperature=1.0,
480
+ temperature=temperature,
468
481
  )
469
482
  commit_with_message_from_ai = input(
470
483
  "Закоммитить с сообщением "
@@ -487,7 +500,7 @@ def main() -> None:
487
500
  + git_status.stdout
488
501
  + "Git diff: "
489
502
  + git_diff.stdout,
490
- temperature=1.0,
503
+ temperature=temperature,
491
504
  )
492
505
  print(
493
506
  colored(
@@ -527,8 +540,6 @@ def main() -> None:
527
540
  (
528
541
  subprocess.run(
529
542
  ["git", "add", "-A"],
530
- capture_output=True,
531
- encoding="utf-8",
532
543
  ),
533
544
  subprocess.run(
534
545
  [
@@ -548,6 +559,12 @@ def main() -> None:
548
559
  == "y"
549
560
  else None
550
561
  )
562
+ except FileNotFoundError as e:
563
+ print(
564
+ colored("Ollama не установлена!", "red")
565
+ if "ollama" in str(e)
566
+ else colored(str(e), "red")
567
+ )
551
568
  except Exception as e:
552
569
  print(colored("Ошибка:", "red") + " " + str(e))
553
570
 
@@ -1,18 +1,17 @@
1
- Metadata-Version: 2.4
2
- Name: commit_maker
3
- Version: 0.1.2
1
+ Metadata-Version: 2.1
2
+ Name: commit-maker
3
+ Version: 0.2.1
4
4
  Summary: CLI-утилита для генерации git-коммитов с помощью ИИ
5
+ Home-page: https://github.com/Sashayerty/commit_maker
5
6
  Author: Alex Bulgakov
6
7
  Author-email: Alex Bulgakov <sashayerty@ya.ru>
7
8
  License: MIT
9
+ Project-URL: Homepage, https://github.com/sashayerty/commit_maker
8
10
  Requires-Python: >=3.8
9
11
  Description-Content-Type: text/markdown
10
12
  License-File: LICENSE
11
- Dynamic: author
12
- Dynamic: license-file
13
- Dynamic: requires-python
14
13
 
15
- # Commit Maker [![Created with Python](https://img.shields.io/badge/Created_with-Python-blue)](https://www.python.org/) [![Created with uv](https://img.shields.io/badge/Created_with-uv-purple)](https://docs.astral.sh/uv/) [![Created with ollama](https://img.shields.io/badge/Created_with-ollama-white)](https://ollama.com/)
14
+ # Commit Maker [![Created with Python](https://img.shields.io/badge/Created_with-Python-blue)](https://www.python.org/) [![Created with uv](https://img.shields.io/badge/Created_with-uv-purple)](https://docs.astral.sh/uv/) [![Created with ollama](https://img.shields.io/badge/Created_with-ollama-white)](https://ollama.com/) [![PyPi](https://img.shields.io/badge/Available_on-pypi-orange)](https://pypi.org/project/commit-maker/)
16
15
 
17
16
  ![Демонстрация](./commit_maker.svg)
18
17
 
@@ -92,21 +91,13 @@ pip3 install commit_maker
92
91
 
93
92
  ## Использование
94
93
 
95
- ### Windows
96
-
97
- ```cmd
98
- commit_maker [OPTION] [VALUE]
99
- ```
100
-
101
- ### Linux/MacOS
102
-
103
94
  ```bash
104
95
  commit_maker [OPTION] [VALUE]
105
96
  ```
106
97
 
107
98
  ### Пример использования
108
99
 
109
- **`-h`**, **`--help`** - вывод помощи
100
+ **`-h`**, **`--help`** - вывод помощи
110
101
  **`-l`**, **`--local-models`** - использование локальных моделей
111
102
  **`-m`**, **`--max-symbols`** - ограничение длины сообщения коммита
112
103
  **`-M`**, **`--model`** - какую локальную модель использовать (при **`-l`**)
@@ -0,0 +1,8 @@
1
+ commit_maker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ commit_maker/main.py,sha256=0xIwwCyht3iuCu-oVoE7dnfuRe-LW1Q-8xOOfBqbUcM,20929
3
+ commit_maker-0.2.1.dist-info/LICENSE,sha256=i6khFYFeloJ8AQuPBehYLLTegIkK91tLmdQtu-2giAQ,1091
4
+ commit_maker-0.2.1.dist-info/METADATA,sha256=8fgp-cVjksdG0olJ2kdBN4fGD3JD6giWRnxpebl8Th4,6108
5
+ commit_maker-0.2.1.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
6
+ commit_maker-0.2.1.dist-info/entry_points.txt,sha256=Mw8sNx-b56y6XLyq7fw9GWuoiuVcq40M1dNKYphh7us,56
7
+ commit_maker-0.2.1.dist-info/top_level.txt,sha256=yQcvhH10NmLr9i84KxdAMPG7zVQXWTyT6Ev6E3v6UdU,13
8
+ commit_maker-0.2.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (75.3.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,8 +0,0 @@
1
- commit_maker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- commit_maker/main.py,sha256=XNPoH4ZDyijoBxUZJa0JGjmpwOLJgRSgLEgjn7fPXPA,20230
3
- commit_maker-0.1.2.dist-info/licenses/LICENSE,sha256=i6khFYFeloJ8AQuPBehYLLTegIkK91tLmdQtu-2giAQ,1091
4
- commit_maker-0.1.2.dist-info/METADATA,sha256=XAYLk3zj8gS3zXJSdg6rcPNTrMihdDxXmLDLNEJ0t_4,6034
5
- commit_maker-0.1.2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
6
- commit_maker-0.1.2.dist-info/entry_points.txt,sha256=Mw8sNx-b56y6XLyq7fw9GWuoiuVcq40M1dNKYphh7us,56
7
- commit_maker-0.1.2.dist-info/top_level.txt,sha256=yQcvhH10NmLr9i84KxdAMPG7zVQXWTyT6Ev6E3v6UdU,13
8
- commit_maker-0.1.2.dist-info/RECORD,,