janito 1.6.0__py3-none-any.whl → 1.8.0__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.
Files changed (117) hide show
  1. janito/__init__.py +1 -1
  2. janito/agent/config.py +3 -3
  3. janito/agent/config_defaults.py +3 -2
  4. janito/agent/conversation.py +73 -27
  5. janito/agent/conversation_api.py +104 -4
  6. janito/agent/conversation_exceptions.py +6 -0
  7. janito/agent/conversation_tool_calls.py +17 -3
  8. janito/agent/event.py +24 -0
  9. janito/agent/event_dispatcher.py +24 -0
  10. janito/agent/event_handler_protocol.py +5 -0
  11. janito/agent/event_system.py +15 -0
  12. janito/agent/message_handler.py +4 -1
  13. janito/agent/message_handler_protocol.py +5 -0
  14. janito/agent/openai_client.py +5 -6
  15. janito/agent/openai_schema_generator.py +23 -4
  16. janito/agent/platform_discovery.py +90 -0
  17. janito/agent/profile_manager.py +34 -110
  18. janito/agent/queued_message_handler.py +22 -3
  19. janito/agent/rich_message_handler.py +3 -1
  20. janito/agent/templates/profiles/system_prompt_template_base.txt.j2 +14 -0
  21. janito/agent/templates/profiles/system_prompt_template_base_pt.txt.j2 +13 -0
  22. janito/agent/test_handler_protocols.py +47 -0
  23. janito/agent/tests/__init__.py +1 -0
  24. janito/agent/tool_base.py +1 -1
  25. janito/agent/tool_executor.py +109 -0
  26. janito/agent/tool_registry.py +3 -75
  27. janito/agent/tool_use_tracker.py +46 -0
  28. janito/agent/tools/__init__.py +11 -8
  29. janito/agent/tools/ask_user.py +26 -12
  30. janito/agent/tools/create_directory.py +50 -18
  31. janito/agent/tools/create_file.py +60 -29
  32. janito/agent/tools/dir_walk_utils.py +16 -0
  33. janito/agent/tools/fetch_url.py +10 -11
  34. janito/agent/tools/find_files.py +49 -40
  35. janito/agent/tools/get_lines.py +60 -25
  36. janito/agent/tools/memory.py +48 -0
  37. janito/agent/tools/move_file.py +72 -23
  38. janito/agent/tools/outline_file/__init__.py +85 -0
  39. janito/agent/tools/outline_file/formatting.py +20 -0
  40. janito/agent/tools/outline_file/markdown_outline.py +14 -0
  41. janito/agent/tools/outline_file/python_outline.py +71 -0
  42. janito/agent/tools/present_choices.py +62 -0
  43. janito/agent/tools/present_choices_test.py +18 -0
  44. janito/agent/tools/remove_directory.py +31 -26
  45. janito/agent/tools/remove_file.py +31 -13
  46. janito/agent/tools/replace_text_in_file.py +135 -36
  47. janito/agent/tools/run_bash_command.py +113 -97
  48. janito/agent/tools/run_powershell_command.py +169 -0
  49. janito/agent/tools/run_python_command.py +53 -29
  50. janito/agent/tools/search_outline.py +17 -0
  51. janito/agent/tools/search_text.py +208 -0
  52. janito/agent/tools/tools_utils.py +47 -4
  53. janito/agent/tools/utils.py +14 -15
  54. janito/agent/tools/validate_file_syntax.py +163 -0
  55. janito/cli/_print_config.py +1 -1
  56. janito/cli/arg_parser.py +36 -4
  57. janito/cli/config_commands.py +1 -1
  58. janito/cli/logging_setup.py +7 -2
  59. janito/cli/main.py +97 -3
  60. janito/cli/runner/__init__.py +0 -2
  61. janito/cli/runner/_termweb_log_utils.py +17 -0
  62. janito/cli/runner/cli_main.py +121 -89
  63. janito/cli/runner/config.py +6 -4
  64. janito/cli/termweb_starter.py +73 -0
  65. janito/cli_chat_shell/chat_loop.py +52 -13
  66. janito/cli_chat_shell/chat_state.py +1 -1
  67. janito/cli_chat_shell/chat_ui.py +2 -3
  68. janito/cli_chat_shell/commands/__init__.py +17 -6
  69. janito/cli_chat_shell/commands/{history_reset.py → history_start.py} +13 -5
  70. janito/cli_chat_shell/commands/lang.py +16 -0
  71. janito/cli_chat_shell/commands/prompt.py +42 -0
  72. janito/cli_chat_shell/commands/session_control.py +36 -1
  73. janito/cli_chat_shell/commands/sum.py +49 -0
  74. janito/cli_chat_shell/commands/termweb_log.py +86 -0
  75. janito/cli_chat_shell/commands/utility.py +5 -2
  76. janito/cli_chat_shell/commands/verbose.py +29 -0
  77. janito/cli_chat_shell/load_prompt.py +47 -8
  78. janito/cli_chat_shell/session_manager.py +9 -1
  79. janito/cli_chat_shell/shell_command_completer.py +20 -0
  80. janito/cli_chat_shell/ui.py +110 -93
  81. janito/i18n/__init__.py +35 -0
  82. janito/i18n/messages.py +23 -0
  83. janito/i18n/pt.py +46 -0
  84. janito/rich_utils.py +43 -43
  85. janito/termweb/app.py +95 -0
  86. janito/termweb/static/editor.html +238 -0
  87. janito/termweb/static/editor.html.bak +238 -0
  88. janito/termweb/static/explorer.html.bak +59 -0
  89. janito/termweb/static/favicon.ico +0 -0
  90. janito/termweb/static/favicon.ico.bak +0 -0
  91. janito/termweb/static/index.html +55 -0
  92. janito/termweb/static/index.html.bak +55 -0
  93. janito/termweb/static/index.html.bak.bak +175 -0
  94. janito/termweb/static/landing.html.bak +36 -0
  95. janito/termweb/static/termicon.svg +1 -0
  96. janito/termweb/static/termweb.css +235 -0
  97. janito/termweb/static/termweb.css.bak +286 -0
  98. janito/termweb/static/termweb.js +187 -0
  99. janito/termweb/static/termweb.js.bak +187 -0
  100. janito/termweb/static/termweb.js.bak.bak +157 -0
  101. janito/termweb/static/termweb_quickopen.js +135 -0
  102. janito/termweb/static/termweb_quickopen.js.bak +125 -0
  103. janito/web/app.py +10 -13
  104. {janito-1.6.0.dist-info → janito-1.8.0.dist-info}/METADATA +73 -32
  105. janito-1.8.0.dist-info/RECORD +127 -0
  106. {janito-1.6.0.dist-info → janito-1.8.0.dist-info}/WHEEL +1 -1
  107. janito/agent/tool_registry_core.py +0 -2
  108. janito/agent/tools/get_file_outline.py +0 -117
  109. janito/agent/tools/py_compile_file.py +0 -40
  110. janito/agent/tools/replace_file.py +0 -51
  111. janito/agent/tools/search_files.py +0 -71
  112. janito/cli/runner/scan.py +0 -44
  113. janito/cli_chat_shell/commands/system.py +0 -73
  114. janito-1.6.0.dist-info/RECORD +0 -81
  115. {janito-1.6.0.dist-info → janito-1.8.0.dist-info}/entry_points.txt +0 -0
  116. {janito-1.6.0.dist-info → janito-1.8.0.dist-info}/licenses/LICENSE +0 -0
  117. {janito-1.6.0.dist-info → janito-1.8.0.dist-info}/top_level.txt +0 -0
janito/cli/runner/scan.py DELETED
@@ -1,44 +0,0 @@
1
- import os
2
- from janito.agent.openai_client import Agent
3
- from janito.agent.runtime_config import unified_config
4
- from janito.agent.config import get_api_key
5
-
6
- def scan_project():
7
- prompt_path = os.path.abspath(os.path.join(
8
- os.path.dirname(__file__),
9
- "..", "..", "agent", "templates", "detect_tech_prompt.j2"
10
- ))
11
- with open(prompt_path, "r", encoding="utf-8") as f:
12
- detect_prompt = f.read()
13
- api_key = get_api_key()
14
- model = unified_config.get("model")
15
- base_url = unified_config.get("base_url", "https://openrouter.ai/api/v1")
16
- azure_openai_api_version = unified_config.get("azure_openai_api_version", "2023-05-15")
17
- use_azure_openai = unified_config.get("use_azure_openai", False)
18
- agent = Agent(
19
- api_key=api_key,
20
- model=model,
21
- system_prompt_template=detect_prompt,
22
- verbose_tools=True,
23
- base_url=base_url,
24
- azure_openai_api_version=azure_openai_api_version,
25
- use_azure_openai=use_azure_openai,
26
- )
27
- from janito.agent.rich_message_handler import RichMessageHandler
28
- message_handler = RichMessageHandler()
29
- messages = [{"role": "system", "content": detect_prompt}]
30
- print("🔍 Scanning project for relevant tech/skills...")
31
- result = agent.chat(
32
- messages,
33
- message_handler=message_handler,
34
- spinner=True,
35
- max_rounds=10,
36
- verbose_response=False,
37
- verbose_events=False,
38
- stream=False,
39
- )
40
- os.makedirs(".janito", exist_ok=True)
41
- tech_txt = os.path.join(".janito", "tech.txt")
42
- with open(tech_txt, "w", encoding="utf-8") as f:
43
- f.write(result["content"].strip() + "\n")
44
- print(f"✅ Tech/skills detected and saved to {tech_txt}")
@@ -1,73 +0,0 @@
1
- from janito.agent.runtime_config import runtime_config
2
-
3
-
4
- def handle_system(console, **kwargs):
5
- profile_manager = kwargs.get("profile_manager")
6
- prompt = profile_manager.system_prompt_template if profile_manager else None
7
- if not prompt and profile_manager:
8
- prompt = profile_manager.render_prompt()
9
- console.print(f"[bold magenta]System Prompt:[/bold magenta]\n{prompt}")
10
-
11
-
12
- def handle_role(console, *args, **kwargs):
13
- state = kwargs.get("state")
14
- profile_manager = kwargs.get("profile_manager")
15
- if not args:
16
- console.print("[bold red]Usage: /role <new role description>[/bold red]")
17
- return
18
- new_role = " ".join(args)
19
- if profile_manager:
20
- profile_manager.set_role(new_role)
21
- # Update system message in conversation
22
- found = False
23
- for msg in state["messages"]:
24
- if msg.get("role") == "system":
25
- msg["content"] = (
26
- profile_manager.system_prompt_template if profile_manager else new_role
27
- )
28
- found = True
29
- break
30
- if not found:
31
- state["messages"].insert(0, {"role": "system", "content": new_role})
32
- # Also store the raw role string
33
- if profile_manager:
34
- setattr(profile_manager, "role_name", new_role)
35
- runtime_config.set("role", new_role)
36
- console.print(f"[bold green]System role updated to:[/bold green] {new_role}")
37
-
38
-
39
- def handle_style(console, *args, **kwargs):
40
- """/style <new_style> - Change the interaction style (e.g., default, technical)"""
41
- state = kwargs.get("state")
42
- profile_manager = kwargs.get("profile_manager")
43
- if not args:
44
- current = getattr(profile_manager, "interaction_style", "default")
45
- console.print(f"[bold green]Current style:[/bold green] {current}")
46
- return
47
- new_style = args[0]
48
- if profile_manager:
49
- profile_manager.set_interaction_style(new_style)
50
- # Update system message in conversation
51
- found = False
52
- for msg in state["messages"]:
53
- if msg.get("role") == "system":
54
- msg["content"] = (
55
- profile_manager.system_prompt_template
56
- if profile_manager
57
- else msg["content"]
58
- )
59
- found = True
60
- break
61
- if not found:
62
- state["messages"].insert(
63
- 0,
64
- {
65
- "role": "system",
66
- "content": (
67
- profile_manager.system_prompt_template
68
- if profile_manager
69
- else new_style
70
- ),
71
- },
72
- )
73
- console.print(f"[bold green]Interaction style updated to:[/bold green] {new_style}")
@@ -1,81 +0,0 @@
1
- janito/__init__.py,sha256=PTA-UJ0gOgRLnjvcmghK_Up95KKEx6TmFCJ8J8l7GRI,23
2
- janito/__main__.py,sha256=KKIoPBE9xPcb54PRYO2UOt0ti04iAwLeJlg8YY36vew,76
3
- janito/rich_utils.py,sha256=gZ4uAYyAeSk_H1uCGYhYkFoel5Z1SDmNhp241pnniqg,1085
4
- janito/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- janito/agent/config.py,sha256=gD2puBUjKbb8bv_KbGUBP7OeeW0JqEEvYQXmIjv0avE,4617
6
- janito/agent/config_defaults.py,sha256=dL3_8mRzEd7c_CF6GQe_-LAN3vWZpOFpm2cgaitpkYo,482
7
- janito/agent/config_utils.py,sha256=UmvR236wDrMc-aTy9LxVbop6YeoJaaPb1d2DBMlkSRg,254
8
- janito/agent/content_handler.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- janito/agent/conversation.py,sha256=fFdWmyxUBbqm3LWL1INVd1MKAQS7EbTPuGRBBAjWom8,4956
10
- janito/agent/conversation_api.py,sha256=v85_BwcyNceeYZorDKnjpgpDUY5sfvTwQMoVjXxAdmE,3441
11
- janito/agent/conversation_exceptions.py,sha256=F36wOPRx0yFaiQUuVqxktkRdNlnXVOUovAEdB40poNM,260
12
- janito/agent/conversation_tool_calls.py,sha256=7RWy_TVxXZY8Cmafy2XtSF1sCLf9O3NIC7dw1PtVYqk,874
13
- janito/agent/conversation_ui.py,sha256=y4f0IoJQoWGrFMB3yi7uIwXokuTjhFtJGK_R7zcTv3w,397
14
- janito/agent/message_handler.py,sha256=Za4xUflbRvamlJP_4_YEStOiXuCYYjI1uQkHabTaUtA,754
15
- janito/agent/openai_client.py,sha256=LM-94jjmARIuuASMCZeJ6N8_seobaQ_lbkeksTLZl24,4624
16
- janito/agent/openai_schema_generator.py,sha256=hqe7VVIf5mPcnSn38_MOlI9HJtTayN-aAXJz9iwxp4s,4821
17
- janito/agent/profile_manager.py,sha256=WSd8ZaOCF5MN4EvSIysl-w3TuTaExi8247BASoyta2E,6364
18
- janito/agent/queued_message_handler.py,sha256=sWyadc4h1xkFn_kgO0Hp5lgzj_8J23i-tV31M1lNtV0,1422
19
- janito/agent/rich_live.py,sha256=NKWU89hRakiJ-0N6FPg40bYREOxQizqicbDv9eUfsKs,927
20
- janito/agent/rich_message_handler.py,sha256=JjoGLJThYd-nO5qLB2FsAyaHoTOS4lTEPP-N91nZPeA,2301
21
- janito/agent/runtime_config.py,sha256=xSx0-RD-WVA9niSCEmEn2ZPLFbQfRhPwwGIa8tid_v8,901
22
- janito/agent/tool_base.py,sha256=b7WJkoCUObFK-WjUXfUm874UmKujYQFAyC7FVkxDOMo,1901
23
- janito/agent/tool_registry.py,sha256=Wa1mNzTBKsxQyFCc2hQgDDRrb-m6TI_XbBGebCzr-6U,4037
24
- janito/agent/tool_registry_core.py,sha256=bF7rRn3ZMpU7JXBFhYQPg2XxczhN572Xc5pbdLBPkvE,148
25
- janito/agent/tools/__init__.py,sha256=68YCMWtkepgjOBkptPNmQpv7Tgb5_58uOWxAMR8fjII,979
26
- janito/agent/tools/ask_user.py,sha256=ZQGKI-cjK8CG6O3elEf5v6c5iybVzgfNiZienK6I2oQ,2912
27
- janito/agent/tools/create_directory.py,sha256=vIKP0kYnU3Ypik9e_iNwuwU7rkb5sdUtHMj2q8NA37A,1303
28
- janito/agent/tools/create_file.py,sha256=wkPpo42KS3958Jialjyt8_Lv0CXIRgOmUI5EJ7wNw3o,2230
29
- janito/agent/tools/fetch_url.py,sha256=xsNdxfyDBj6nLYBsMiQoBr685-TUxRx3s3893F7E2ek,2027
30
- janito/agent/tools/find_files.py,sha256=CMUAAC-3skw2OKbu_wN6SFBeiVx-xWgVrA5_u4a6sLc,2604
31
- janito/agent/tools/get_file_outline.py,sha256=e9RNijfE5koaSB0mJe-L3j-fjG4I1YgTJeToDMTTFuY,5348
32
- janito/agent/tools/get_lines.py,sha256=pCV9ut6-GTRj5rBCp8hijTAwh37D8hPXScOjuy1HWUQ,3926
33
- janito/agent/tools/gitignore_utils.py,sha256=fDLyRZmCu6Hqhp1BEN8hs7oG0FtA-1SM9TGDz4g0lbw,1470
34
- janito/agent/tools/move_file.py,sha256=6-90TNlL9JnhWMFCtoy59TRZq2xk6VrP8Mv-EpPDP80,2568
35
- janito/agent/tools/py_compile_file.py,sha256=pfHDXVa75WhO5Io_rXF0DnIB8y2BypoAsS4wNCVANeE,1601
36
- janito/agent/tools/remove_directory.py,sha256=oMme-7e6hZG5Z0Wxu6SpdWjop_yMMZlrBtwkoqfn2NY,2192
37
- janito/agent/tools/remove_file.py,sha256=dq17r-vd61LGS6RLic77BlD6ZzuAjWBBUGtUsX5PCTk,1731
38
- janito/agent/tools/replace_file.py,sha256=oex5dncfny0Lv9om3LVs1u77IOemKZ7Cjh4IRIz_paM,2381
39
- janito/agent/tools/replace_text_in_file.py,sha256=DNafuM6CFTKVEimP6jb9IHglG3BGCezQDLRbqSJ6TfI,5288
40
- janito/agent/tools/rich_live.py,sha256=KpAN-dF0h9LZnYvSK-UKR_sbDnnDw0jUxY3cj_EW_wQ,1215
41
- janito/agent/tools/run_bash_command.py,sha256=yDyVVQspaV_bNqOoAyplwczOpwu62MhNMHsQGkV37s8,6878
42
- janito/agent/tools/run_python_command.py,sha256=_NdpRMNeHIf4h0ARaYUyO7ncHEbLXICFk8uJVdwpCPU,6099
43
- janito/agent/tools/search_files.py,sha256=iyED-9QW1zGEJWIlqHPTQYanMDZA8vK4qIQ03eO4ZkU,3240
44
- janito/agent/tools/tools_utils.py,sha256=ud0S8uVe1I3hKQBdQMf_RcYEDt7baTGBGeDd5IU23-o,358
45
- janito/agent/tools/utils.py,sha256=zsW-ROZJYYFeDAhwN0YHMAqsnjfBXPdvJJVAa_TmQ1g,1136
46
- janito/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- janito/cli/_print_config.py,sha256=VRv_KSVaeMmqmF5cHQC0YfRqem3LgcsXoWRn6fyNJfQ,3566
48
- janito/cli/_utils.py,sha256=tRAUMDWKczd81ZvKYkwpsHWSeLzQoVlOoQ-lOw9Iujw,291
49
- janito/cli/arg_parser.py,sha256=AXzq6TIRjD7EBWb176CCszMz7LWuCtMu4c0a03XRQk8,5897
50
- janito/cli/config_commands.py,sha256=CHIeqxs6rwAfvfaq_hZYrSdWtG0oQjsZBfMo95RUfLk,8531
51
- janito/cli/logging_setup.py,sha256=u2FxjJo-klLsY6aHxBuDymDYnuw9bc--1aqqsVeW9jc,1213
52
- janito/cli/main.py,sha256=2_fy_wPu7wAL-pxvdC65wxu6Wz4sFTTP5N6SLShT5Ak,1289
53
- janito/cli/runner/__init__.py,sha256=LBu8S8JS73biePK_WwSIlRBwM1c5DX5DGklN7acIyO0,70
54
- janito/cli/runner/cli_main.py,sha256=hKbvMmWZHm01z9qSUYTJ8bUUkE1o3YC55S7PYGN4Eqk,5446
55
- janito/cli/runner/config.py,sha256=7uqzw7vIA_SCCJFACjE_pHtPb9l9IXsaZW-ra_0AdQ0,1705
56
- janito/cli/runner/formatting.py,sha256=k0mtHoglqR8fKcebSK81iWTT_EL-gDl7eNfjlFZRY6g,287
57
- janito/cli/runner/scan.py,sha256=QTA67URhdJtIE8jw7aA2NA0cal1d64G7v36NCH0E0w4,1760
58
- janito/cli_chat_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
- janito/cli_chat_shell/chat_loop.py,sha256=DD71TzcJublz3I3zRiylw6EPD2SuGNah2P81FZQmYVo,4450
60
- janito/cli_chat_shell/chat_state.py,sha256=5wLSjZV0y5fHyU-Lkl4J4-G2GRY0n7gfcAof3515_Bo,1162
61
- janito/cli_chat_shell/chat_ui.py,sha256=IbP2OVGkLycgcUBvdgbKyIUbCnMduhvoSMYYKlpWULc,1344
62
- janito/cli_chat_shell/config_shell.py,sha256=sG04S_z27wI7nXKMaVDcwDpBCuo6Cvd4uhutUQesJKo,3807
63
- janito/cli_chat_shell/load_prompt.py,sha256=8AyHaADBk5_berjt10fISG3Z9Bu5RnVUs2BzNEYOPIQ,633
64
- janito/cli_chat_shell/session_manager.py,sha256=qzCDpAAXx_YZRVF4GwWPwbkxROwj_14jF52QjkjDGP4,2136
65
- janito/cli_chat_shell/ui.py,sha256=5a5lwlEQs211R6Pr_WYt9HuMoQMjTkbamyoHZC5lsaI,6616
66
- janito/cli_chat_shell/commands/__init__.py,sha256=D06FCOmKCFf02Li63KlkAtW753z5fSGJ_AylMJGvk9A,1378
67
- janito/cli_chat_shell/commands/config.py,sha256=JTQwIuSBunxDwvGsU_Cu78GkQNYCtDFTPZ7HOxNOZCY,945
68
- janito/cli_chat_shell/commands/history_reset.py,sha256=GBY8Cpcm2yE1C3DhiWWQwS7WFYPxoJ3LPmD0hCx8ut8,1017
69
- janito/cli_chat_shell/commands/session.py,sha256=64H9UYB-LRSWzMar_C7iNM06MqrKmpRm_Dk9XXIMCiM,1739
70
- janito/cli_chat_shell/commands/session_control.py,sha256=7G4XYfI22fHguJgIbIrbcQ_fIbcrvd1gBBXRuYUqtBU,333
71
- janito/cli_chat_shell/commands/system.py,sha256=ixKp6JLagcs6zsXsmTvzSNY4TUFIVzRxhiZfLvI-OJU,2717
72
- janito/cli_chat_shell/commands/utility.py,sha256=QUa35hppatRLY24DuXiEIn7gCIcNz4w4qbkRC157QOU,936
73
- janito/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
- janito/web/__main__.py,sha256=5Ck6okOZmxKYkQ-ir4mxXDH7XWMNR-9szgsm0UyQLE0,734
75
- janito/web/app.py,sha256=O4rQSSqRG-N2tk3ho0CTMeybbrCd8pESFqpmiGASHVk,7453
76
- janito-1.6.0.dist-info/licenses/LICENSE,sha256=sHBqv0bvtrb29H7WRR-Z603YHm9pLtJIo3nHU_9cmgE,1091
77
- janito-1.6.0.dist-info/METADATA,sha256=JyLiizuc2poewVQtV2F2-H4rdut0FK7u5QvyaNiUhMU,10729
78
- janito-1.6.0.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
79
- janito-1.6.0.dist-info/entry_points.txt,sha256=wIo5zZxbmu4fC-ZMrsKD0T0vq7IqkOOLYhrqRGypkx4,48
80
- janito-1.6.0.dist-info/top_level.txt,sha256=m0NaVCq0-ivxbazE2-ND0EA9Hmuijj_OGkmCbnBcCig,7
81
- janito-1.6.0.dist-info/RECORD,,