janito 2.24.0__py3-none-any.whl → 2.25.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.
- janito/cli/chat_mode/session.py +2 -2
- janito/cli/cli_commands/list_plugins.py +32 -0
- janito/cli/core/getters.py +2 -0
- janito/cli/main_cli.py +6 -2
- janito/cli/single_shot_mode/handler.py +2 -2
- janito/config_manager.py +8 -0
- janito/exceptions.py +19 -1
- janito/plugins/base.py +53 -2
- janito/plugins/config.py +87 -0
- janito/plugins/discovery.py +32 -0
- janito/plugins/manager.py +56 -2
- janito/tools/adapters/local/adapter.py +8 -26
- janito/tools/adapters/local/ask_user.py +1 -1
- janito/tools/adapters/local/copy_file.py +3 -1
- janito/tools/adapters/local/create_directory.py +2 -2
- janito/tools/adapters/local/create_file.py +8 -4
- janito/tools/adapters/local/fetch_url.py +25 -22
- janito/tools/adapters/local/find_files.py +3 -2
- janito/tools/adapters/local/get_file_outline/core.py +3 -1
- janito/tools/adapters/local/get_file_outline/search_outline.py +1 -1
- janito/tools/adapters/local/move_file.py +3 -2
- janito/tools/adapters/local/open_html_in_browser.py +1 -1
- janito/tools/adapters/local/open_url.py +1 -1
- janito/tools/adapters/local/python_file_run.py +2 -0
- janito/tools/adapters/local/read_chart.py +61 -54
- janito/tools/adapters/local/read_files.py +4 -3
- janito/tools/adapters/local/remove_directory.py +2 -0
- janito/tools/adapters/local/remove_file.py +3 -3
- janito/tools/adapters/local/run_powershell_command.py +1 -0
- janito/tools/adapters/local/search_text/core.py +3 -2
- janito/tools/adapters/local/validate_file_syntax/core.py +3 -1
- janito/tools/adapters/local/view_file.py +3 -1
- janito/tools/loop_protection_decorator.py +64 -25
- janito/tools/path_utils.py +39 -0
- janito/tools/tools_adapter.py +68 -22
- {janito-2.24.0.dist-info → janito-2.25.0.dist-info}/METADATA +1 -1
- {janito-2.24.0.dist-info → janito-2.25.0.dist-info}/RECORD +46 -39
- janito-2.25.0.dist-info/top_level.txt +2 -0
- janito-coder/janito_coder/__init__.py +9 -0
- janito-coder/janito_coder/plugins/__init__.py +27 -0
- janito-coder/janito_coder/plugins/code_navigator.py +618 -0
- janito-coder/janito_coder/plugins/git_analyzer.py +273 -0
- janito-coder/pyproject.toml +347 -0
- janito-2.24.0.dist-info/top_level.txt +0 -1
- {janito-2.24.0.dist-info → janito-2.25.0.dist-info}/WHEEL +0 -0
- {janito-2.24.0.dist-info → janito-2.25.0.dist-info}/entry_points.txt +0 -0
- {janito-2.24.0.dist-info → janito-2.25.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,273 @@
|
|
1
|
+
"""
|
2
|
+
Git repository analysis plugin for janito.
|
3
|
+
"""
|
4
|
+
|
5
|
+
import os
|
6
|
+
import subprocess
|
7
|
+
from typing import Dict, List, Optional, Any
|
8
|
+
from datetime import datetime
|
9
|
+
|
10
|
+
from janito.plugins.base import Plugin, PluginMetadata
|
11
|
+
from janito.tools.tool_base import ToolBase, ToolPermissions
|
12
|
+
|
13
|
+
|
14
|
+
class GitStatusTool(ToolBase):
|
15
|
+
"""Tool to analyze git repository status."""
|
16
|
+
|
17
|
+
tool_name = "git_status"
|
18
|
+
permissions = ToolPermissions(read=True, write=False, execute=True)
|
19
|
+
|
20
|
+
def run(self, path: str = ".") -> str:
|
21
|
+
"""
|
22
|
+
Get git status for the repository.
|
23
|
+
|
24
|
+
Args:
|
25
|
+
path: Path to the git repository
|
26
|
+
|
27
|
+
Returns:
|
28
|
+
Git status information as string
|
29
|
+
"""
|
30
|
+
try:
|
31
|
+
os.chdir(path)
|
32
|
+
result = subprocess.run(
|
33
|
+
["git", "status", "--porcelain"],
|
34
|
+
capture_output=True,
|
35
|
+
text=True,
|
36
|
+
check=True,
|
37
|
+
)
|
38
|
+
|
39
|
+
if not result.stdout.strip():
|
40
|
+
return "Working directory clean"
|
41
|
+
|
42
|
+
lines = result.stdout.strip().split("\n")
|
43
|
+
status_summary = {}
|
44
|
+
|
45
|
+
for line in lines:
|
46
|
+
if len(line) >= 2:
|
47
|
+
status = line[:2]
|
48
|
+
filename = line[3:]
|
49
|
+
if status not in status_summary:
|
50
|
+
status_summary[status] = []
|
51
|
+
status_summary[status].append(filename)
|
52
|
+
|
53
|
+
output = []
|
54
|
+
for status, files in status_summary.items():
|
55
|
+
output.append(f"{status}: {len(files)} files")
|
56
|
+
for f in files[:5]: # Show first 5 files
|
57
|
+
output.append(f" {f}")
|
58
|
+
if len(files) > 5:
|
59
|
+
output.append(f" ... and {len(files) - 5} more")
|
60
|
+
|
61
|
+
return "\n".join(output)
|
62
|
+
|
63
|
+
except subprocess.CalledProcessError as e:
|
64
|
+
return f"Error getting git status: {e.stderr}"
|
65
|
+
except FileNotFoundError:
|
66
|
+
return "Git not found. Please install git."
|
67
|
+
|
68
|
+
|
69
|
+
class GitLogTool(ToolBase):
|
70
|
+
"""Tool to analyze git commit history."""
|
71
|
+
|
72
|
+
tool_name = "git_log"
|
73
|
+
permissions = ToolPermissions(read=True, write=False, execute=True)
|
74
|
+
|
75
|
+
def run(self, path: str = ".", limit: int = 10) -> str:
|
76
|
+
"""
|
77
|
+
Get recent git commits.
|
78
|
+
|
79
|
+
Args:
|
80
|
+
path: Path to the git repository
|
81
|
+
limit: Number of commits to show
|
82
|
+
|
83
|
+
Returns:
|
84
|
+
Git log information as string
|
85
|
+
"""
|
86
|
+
try:
|
87
|
+
os.chdir(path)
|
88
|
+
result = subprocess.run(
|
89
|
+
["git", "log", "--oneline", "--max-count", str(limit)],
|
90
|
+
capture_output=True,
|
91
|
+
text=True,
|
92
|
+
check=True,
|
93
|
+
)
|
94
|
+
|
95
|
+
return result.stdout.strip()
|
96
|
+
|
97
|
+
except subprocess.CalledProcessError as e:
|
98
|
+
return f"Error getting git log: {e.stderr}"
|
99
|
+
except FileNotFoundError:
|
100
|
+
return "Git not found. Please install git."
|
101
|
+
|
102
|
+
|
103
|
+
class GitBranchTool(ToolBase):
|
104
|
+
"""Tool to analyze git branches."""
|
105
|
+
|
106
|
+
tool_name = "git_branches"
|
107
|
+
permissions = ToolPermissions(read=True, write=False, execute=True)
|
108
|
+
|
109
|
+
def run(self, path: str = ".") -> str:
|
110
|
+
"""
|
111
|
+
Get git branch information.
|
112
|
+
|
113
|
+
Args:
|
114
|
+
path: Path to the git repository
|
115
|
+
|
116
|
+
Returns:
|
117
|
+
Branch information as string
|
118
|
+
"""
|
119
|
+
try:
|
120
|
+
os.chdir(path)
|
121
|
+
|
122
|
+
# Get current branch
|
123
|
+
current_result = subprocess.run(
|
124
|
+
["git", "branch", "--show-current"],
|
125
|
+
capture_output=True,
|
126
|
+
text=True,
|
127
|
+
check=True,
|
128
|
+
)
|
129
|
+
|
130
|
+
current_branch = current_result.stdout.strip()
|
131
|
+
|
132
|
+
# Get all branches
|
133
|
+
branches_result = subprocess.run(
|
134
|
+
["git", "branch", "-a"], capture_output=True, text=True, check=True
|
135
|
+
)
|
136
|
+
|
137
|
+
branches = branches_result.stdout.strip().split("\n")
|
138
|
+
|
139
|
+
output = [f"Current branch: {current_branch}"]
|
140
|
+
output.append("All branches:")
|
141
|
+
|
142
|
+
for branch in branches:
|
143
|
+
branch = branch.strip()
|
144
|
+
if branch.startswith("*"):
|
145
|
+
branch = branch[2:] # Remove asterisk
|
146
|
+
output.append(f" * {branch} (current)")
|
147
|
+
else:
|
148
|
+
output.append(f" {branch}")
|
149
|
+
|
150
|
+
return "\n".join(output)
|
151
|
+
|
152
|
+
except subprocess.CalledProcessError as e:
|
153
|
+
return f"Error getting git branches: {e.stderr}"
|
154
|
+
except FileNotFoundError:
|
155
|
+
return "Git not found. Please install git."
|
156
|
+
|
157
|
+
|
158
|
+
class GitStatsTool(ToolBase):
|
159
|
+
"""Tool to get git repository statistics."""
|
160
|
+
|
161
|
+
tool_name = "git_stats"
|
162
|
+
permissions = ToolPermissions(read=True, write=False, execute=True)
|
163
|
+
|
164
|
+
def run(self, path: str = ".") -> str:
|
165
|
+
"""
|
166
|
+
Get git repository statistics.
|
167
|
+
|
168
|
+
Args:
|
169
|
+
path: Path to the git repository
|
170
|
+
|
171
|
+
Returns:
|
172
|
+
Repository statistics as string
|
173
|
+
"""
|
174
|
+
try:
|
175
|
+
os.chdir(path)
|
176
|
+
|
177
|
+
stats = {}
|
178
|
+
|
179
|
+
# Total commits
|
180
|
+
commits_result = subprocess.run(
|
181
|
+
["git", "rev-list", "--count", "HEAD"],
|
182
|
+
capture_output=True,
|
183
|
+
text=True,
|
184
|
+
check=True,
|
185
|
+
)
|
186
|
+
stats["total_commits"] = commits_result.stdout.strip()
|
187
|
+
|
188
|
+
# Contributors
|
189
|
+
contributors_result = subprocess.run(
|
190
|
+
["git", "shortlog", "-sn", "--all"],
|
191
|
+
capture_output=True,
|
192
|
+
text=True,
|
193
|
+
check=True,
|
194
|
+
)
|
195
|
+
|
196
|
+
contributors = contributors_result.stdout.strip().split("\n")
|
197
|
+
stats["total_contributors"] = len(contributors)
|
198
|
+
stats["top_contributors"] = contributors[:5]
|
199
|
+
|
200
|
+
# Files
|
201
|
+
files_result = subprocess.run(
|
202
|
+
["git", "ls-files"], capture_output=True, text=True, check=True
|
203
|
+
)
|
204
|
+
|
205
|
+
files = files_result.stdout.strip().split("\n")
|
206
|
+
stats["total_files"] = len(files)
|
207
|
+
|
208
|
+
# Languages (approximate by file extension)
|
209
|
+
extensions = {}
|
210
|
+
for f in files:
|
211
|
+
ext = os.path.splitext(f)[1].lower()
|
212
|
+
if ext:
|
213
|
+
extensions[ext] = extensions.get(ext, 0) + 1
|
214
|
+
|
215
|
+
top_languages = sorted(
|
216
|
+
extensions.items(), key=lambda x: x[1], reverse=True
|
217
|
+
)[:5]
|
218
|
+
|
219
|
+
output = [
|
220
|
+
f"Repository Statistics:",
|
221
|
+
f"Total commits: {stats['total_commits']}",
|
222
|
+
f"Total contributors: {stats['total_contributors']}",
|
223
|
+
f"Total files: {stats['total_files']}",
|
224
|
+
"",
|
225
|
+
"Top contributors:",
|
226
|
+
]
|
227
|
+
|
228
|
+
for contributor in stats["top_contributors"]:
|
229
|
+
output.append(f" {contributor.strip()}")
|
230
|
+
|
231
|
+
output.extend(
|
232
|
+
[
|
233
|
+
"",
|
234
|
+
"Top file types:",
|
235
|
+
]
|
236
|
+
)
|
237
|
+
|
238
|
+
for ext, count in top_languages:
|
239
|
+
output.append(f" {ext}: {count} files")
|
240
|
+
|
241
|
+
return "\n".join(output)
|
242
|
+
|
243
|
+
except subprocess.CalledProcessError as e:
|
244
|
+
return f"Error getting git stats: {e.stderr}"
|
245
|
+
except FileNotFoundError:
|
246
|
+
return "Git not found. Please install git."
|
247
|
+
|
248
|
+
|
249
|
+
class GitAnalyzerPlugin(Plugin):
|
250
|
+
"""Plugin providing git repository analysis tools."""
|
251
|
+
|
252
|
+
def get_metadata(self) -> PluginMetadata:
|
253
|
+
return PluginMetadata(
|
254
|
+
name="git_analyzer",
|
255
|
+
version="1.0.0",
|
256
|
+
description="Git repository analysis and insights",
|
257
|
+
author="Janito Coder Team",
|
258
|
+
license="MIT",
|
259
|
+
homepage="https://github.com/ikignosis/janito-coder",
|
260
|
+
)
|
261
|
+
|
262
|
+
def get_tools(self):
|
263
|
+
return [GitStatusTool, GitLogTool, GitBranchTool, GitStatsTool]
|
264
|
+
|
265
|
+
def initialize(self):
|
266
|
+
print("Git Analyzer plugin initialized!")
|
267
|
+
|
268
|
+
def cleanup(self):
|
269
|
+
print("Git Analyzer plugin cleaned up!")
|
270
|
+
|
271
|
+
|
272
|
+
# This makes the plugin discoverable
|
273
|
+
PLUGIN_CLASS = GitAnalyzerPlugin
|
@@ -0,0 +1,347 @@
|
|
1
|
+
[build-system]
|
2
|
+
requires = ["setuptools>=61.0", "setuptools_scm>=8.0"]
|
3
|
+
build-backend = "setuptools.build_meta"
|
4
|
+
|
5
|
+
[project]
|
6
|
+
name = "janito-coder"
|
7
|
+
description = "Extra plugins for janito focused on software development and coding tasks"
|
8
|
+
authors = [
|
9
|
+
{ name="João Pinto", email="janito@ikignosis.org" }
|
10
|
+
]
|
11
|
+
readme = "README.md"
|
12
|
+
requires-python = ">=3.7"
|
13
|
+
dynamic = ["version"]
|
14
|
+
dependencies = [
|
15
|
+
"janito",
|
16
|
+
"gitpython>=3.1.0",
|
17
|
+
"tree-sitter>=0.20.0",
|
18
|
+
"tree-sitter-python>=0.20.0",
|
19
|
+
"tree-sitter-javascript>=0.20.0",
|
20
|
+
"tree-sitter-java>=0.20.0",
|
21
|
+
"tree-sitter-c>=0.20.0",
|
22
|
+
"tree-sitter-cpp>=0.20.0",
|
23
|
+
"tree-sitter-rust>=0.20.0",
|
24
|
+
"tree-sitter-go>=0.20.0",
|
25
|
+
"tree-sitter-typescript>=0.20.0",
|
26
|
+
"tree-sitter-bash>=0.20.0",
|
27
|
+
"tree-sitter-json>=0.20.0",
|
28
|
+
"tree-sitter-yaml>=0.20.0",
|
29
|
+
"tree-sitter-markdown>=0.20.0",
|
30
|
+
"tree-sitter-html>=0.20.0",
|
31
|
+
"tree-sitter-css>=0.20.0",
|
32
|
+
"tree-sitter-sql>=0.20.0",
|
33
|
+
"tree-sitter-dockerfile>=0.20.0",
|
34
|
+
"tree-sitter-regex>=0.20.0",
|
35
|
+
"tree-sitter-toml>=0.20.0",
|
36
|
+
"tree-sitter-xml>=0.20.0",
|
37
|
+
"tree-sitter-php>=0.20.0",
|
38
|
+
"tree-sitter-ruby>=0.20.0",
|
39
|
+
"tree-sitter-swift>=0.20.0",
|
40
|
+
"tree-sitter-kotlin>=0.20.0",
|
41
|
+
"tree-sitter-scala>=0.20.0",
|
42
|
+
"tree-sitter-c-sharp>=0.20.0",
|
43
|
+
"tree-sitter-lua>=0.20.0",
|
44
|
+
"tree-sitter-perl>=0.20.0",
|
45
|
+
"tree-sitter-r>=0.20.0",
|
46
|
+
"tree-sitter-shell>=0.20.0",
|
47
|
+
"tree-sitter-make>=0.20.0",
|
48
|
+
"tree-sitter-cmake>=0.20.0",
|
49
|
+
"tree-sitter-llvm>=0.20.0",
|
50
|
+
"tree-sitter-bash>=0.20.0",
|
51
|
+
"tree-sitter-zsh>=0.20.0",
|
52
|
+
"tree-sitter-fish>=0.20.0",
|
53
|
+
"tree-sitter-powershell>=0.20.0",
|
54
|
+
"tree-sitter-batch>=0.20.0",
|
55
|
+
"tree-sitter-cmd>=0.20.0",
|
56
|
+
"tree-sitter-awk>=0.20.0",
|
57
|
+
"tree-sitter-sed>=0.20.0",
|
58
|
+
"tree-sitter-vim>=0.20.0",
|
59
|
+
"tree-sitter-emacs-lisp>=0.20.0",
|
60
|
+
"tree-sitter-elisp>=0.20.0",
|
61
|
+
"tree-sitter-clojure>=0.20.0",
|
62
|
+
"tree-sitter-haskell>=0.20.0",
|
63
|
+
"tree-sitter-ocaml>=0.20.0",
|
64
|
+
"tree-sitter-fsharp>=0.20.0",
|
65
|
+
"tree-sitter-elixir>=0.20.0",
|
66
|
+
"tree-sitter-erlang>=0.20.0",
|
67
|
+
"tree-sitter-dart>=0.20.0",
|
68
|
+
"tree-sitter-flutter>=0.20.0",
|
69
|
+
"tree-sitter-vue>=0.20.0",
|
70
|
+
"tree-sitter-svelte>=0.20.0",
|
71
|
+
"tree-sitter-angular>=0.20.0",
|
72
|
+
"tree-sitter-react>=0.20.0",
|
73
|
+
"tree-sitter-jsx>=0.20.0",
|
74
|
+
"tree-sitter-tsx>=0.20.0",
|
75
|
+
"tree-sitter-graphql>=0.20.0",
|
76
|
+
"tree-sitter-protobuf>=0.20.0",
|
77
|
+
"tree-sitter-thrift>=0.20.0",
|
78
|
+
"tree-sitter-avro>=0.20.0",
|
79
|
+
"tree-sitter-parquet>=0.20.0",
|
80
|
+
"tree-sitter-orc>=0.20.0",
|
81
|
+
"tree-sitter-csv>=0.20.0",
|
82
|
+
"tree-sitter-tsv>=0.20.0",
|
83
|
+
"tree-sitter-log>=0.20.0",
|
84
|
+
"tree-sitter-ini>=0.20.0",
|
85
|
+
"tree-sitter-properties>=0.20.0",
|
86
|
+
"tree-sitter-env>=0.20.0",
|
87
|
+
"tree-sitter-ssh-config>=0.20.0",
|
88
|
+
"tree-sitter-nginx>=0.20.0",
|
89
|
+
"tree-sitter-apache>=0.20.0",
|
90
|
+
"tree-sitter-terraform>=0.20.0",
|
91
|
+
"tree-sitter-cloudformation>=0.20.0",
|
92
|
+
"tree-sitter-ansible>=0.20.0",
|
93
|
+
"tree-sitter-puppet>=0.20.0",
|
94
|
+
"tree-sitter-chef>=0.20.0",
|
95
|
+
"tree-sitter-salt>=0.20.0",
|
96
|
+
"tree-sitter-vagrant>=0.20.0",
|
97
|
+
"tree-sitter-packer>=0.20.0",
|
98
|
+
"tree-sitter-consul>=0.20.0",
|
99
|
+
"tree-sitter-vault>=0.20.0",
|
100
|
+
"tree-sitter-nomad>=0.20.0",
|
101
|
+
"tree-sitter-k8s>=0.20.0",
|
102
|
+
"tree-sitter-helm>=0.20.0",
|
103
|
+
"tree-sitter-kustomize>=0.20.0",
|
104
|
+
"tree-sitter-skaffold>=0.20.0",
|
105
|
+
"tree-sitter-argocd>=0.20.0",
|
106
|
+
"tree-sitter-flux>=0.20.0",
|
107
|
+
"tree-sitter-istio>=0.20.0",
|
108
|
+
"tree-sitter-linkerd>=0.20.0",
|
109
|
+
"tree-sitter-consul-template>=0.20.0",
|
110
|
+
"tree-sitter-envoy>=0.20.0",
|
111
|
+
"tree-sitter-haproxy>=0.20.0",
|
112
|
+
"tree-sitter-varnish>=0.20.0",
|
113
|
+
"tree-sitter-squid>=0.20.0",
|
114
|
+
"tree-sitter-bind>=0.20.0",
|
115
|
+
"tree-sitter-dns>=0.20.0",
|
116
|
+
"tree-sitter-dhcp>=0.20.0",
|
117
|
+
"tree-sitter-ftp>=0.20.0",
|
118
|
+
"tree-sitter-sftp>=0.20.0",
|
119
|
+
"tree-sitter-ssh>=0.20.0",
|
120
|
+
"tree-sitter-telnet>=0.20.0",
|
121
|
+
"tree-sitter-smtp>=0.20.0",
|
122
|
+
"tree-sitter-imap>=0.20.0",
|
123
|
+
"tree-sitter-pop3>=0.20.0",
|
124
|
+
"tree-sitter-http>=0.20.0",
|
125
|
+
"tree-sitter-https>=0.20.0",
|
126
|
+
"tree-sitter-websocket>=0.20.0",
|
127
|
+
"tree-sitter-grpc>=0.20.0",
|
128
|
+
"tree-sitter-thrift>=0.20.0",
|
129
|
+
"tree-sitter-avro>=0.20.0",
|
130
|
+
"tree-sitter-protobuf>=0.20.0",
|
131
|
+
"tree-sitter-capnproto>=0.20.0",
|
132
|
+
"tree-sitter-flatbuffers>=0.20.0",
|
133
|
+
"tree-sitter-msgpack>=0.20.0",
|
134
|
+
"tree-sitter-cbor>=0.20.0",
|
135
|
+
"tree-sitter-bson>=0.20.0",
|
136
|
+
"tree-sitter-yaml>=0.20.0",
|
137
|
+
"tree-sitter-toml>=0.20.0",
|
138
|
+
"tree-sitter-json>=0.20.0",
|
139
|
+
"tree-sitter-xml>=0.20.0",
|
140
|
+
"tree-sitter-html>=0.20.0",
|
141
|
+
"tree-sitter-css>=0.20.0",
|
142
|
+
"tree-sitter-scss>=0.20.0",
|
143
|
+
"tree-sitter-sass>=0.20.0",
|
144
|
+
"tree-sitter-less>=0.20.0",
|
145
|
+
"tree-sitter-stylus>=0.20.0",
|
146
|
+
"tree-sitter-postcss>=0.20.0",
|
147
|
+
"tree-sitter-tailwind>=0.20.0",
|
148
|
+
"tree-sitter-bootstrap>=0.20.0",
|
149
|
+
"tree-sitter-bulma>=0.20.0",
|
150
|
+
"tree-sitter-foundation>=0.20.0",
|
151
|
+
"tree-sitter-semantic-ui>=0.20.0",
|
152
|
+
"tree-sitter-materialize>=0.20.0",
|
153
|
+
"tree-sitter-uikit>=0.20.0",
|
154
|
+
"tree-sitter-primer>=0.20.0",
|
155
|
+
"tree-sitter-chakra-ui>=0.20.0",
|
156
|
+
"tree-sitter-ant-design>=0.20.0",
|
157
|
+
"tree-sitter-element-ui>=0.20.0",
|
158
|
+
"tree-sitter-vuetify>=0.20.0",
|
159
|
+
"tree-sitter-quasar>=0.20.0",
|
160
|
+
"tree-sitter-nuxt>=0.20.0",
|
161
|
+
"tree-sitter-next>=0.20.0",
|
162
|
+
"tree-sitter-gatsby>=0.20.0",
|
163
|
+
"tree-sitter-jekyll>=0.20.0",
|
164
|
+
"tree-sitter-hugo>=0.20.0",
|
165
|
+
"tree-sitter-hexo>=0.20.0",
|
166
|
+
"tree-sitter-eleventy>=0.20.0",
|
167
|
+
"tree-sitter-astro>=0.20.0",
|
168
|
+
"tree-sitter-svelte-kit>=0.20.0",
|
169
|
+
"tree-sitter-remix>=0.20.0",
|
170
|
+
"tree-sitter-solid-js>=0.20.0",
|
171
|
+
"tree-sitter-solid-start>=0.20.0",
|
172
|
+
"tree-sitter-qwik>=0.20.0",
|
173
|
+
"tree-sitter-marko>=0.20.0",
|
174
|
+
"tree-sitter-handlebars>=0.20.0",
|
175
|
+
"tree-sitter-mustache>=0.20.0",
|
176
|
+
"tree-sitter-liquid>=0.20.0",
|
177
|
+
"tree-sitter-nunjucks>=0.20.0",
|
178
|
+
"tree-sitter-ejs>=0.20.0",
|
179
|
+
"tree-sitter-pug>=0.20.0",
|
180
|
+
"tree-sitter-haml>=0.20.0",
|
181
|
+
"tree-sitter-slim>=0.20.0",
|
182
|
+
"tree-sitter-jade>=0.20.0",
|
183
|
+
"tree-sitter-blade>=0.20.0",
|
184
|
+
"tree-sitter-twig>=0.20.0",
|
185
|
+
"tree-sitter-smarty>=0.20.0",
|
186
|
+
"tree-sitter-django>=0.20.0",
|
187
|
+
"tree-sitter-flask>=0.20.0",
|
188
|
+
"tree-sitter-fastapi>=0.20.0",
|
189
|
+
"tree-sitter-express>=0.20.0",
|
190
|
+
"tree-sitter-koa>=0.20.0",
|
191
|
+
"tree-sitter-hapi>=0.20.0",
|
192
|
+
"tree-sitter-sails>=0.20.0",
|
193
|
+
"tree-sitter-nest>=0.20.0",
|
194
|
+
"tree-sitter-spring>=0.20.0",
|
195
|
+
"tree-sitter-django-rest>=0.20.0",
|
196
|
+
"tree-sitter-laravel>=0.20.0",
|
197
|
+
"tree-sitter-symfony>=0.20.0",
|
198
|
+
"tree-sitter-codeigniter>=0.20.0",
|
199
|
+
"tree-sitter-yii>=0.20.0",
|
200
|
+
"tree-sitter-zend>=0.20.0",
|
201
|
+
"tree-sitter-phalcon>=0.20.0",
|
202
|
+
"tree-sitter-slim>=0.20.0",
|
203
|
+
"tree-sitter-sinatra>=0.20.0",
|
204
|
+
"tree-sitter-rails>=0.20.0",
|
205
|
+
"tree-sitter-grails>=0.20.0",
|
206
|
+
"tree-sitter-play>=0.20.0",
|
207
|
+
"tree-sitter-ktor>=0.20.0",
|
208
|
+
"tree-sitter-micronaut>=0.20.0",
|
209
|
+
"tree-sitter-quarkus>=0.20.0",
|
210
|
+
"tree-sitter-vertx>=0.20.0",
|
211
|
+
"tree-sitter-dropwizard>=0.20.0",
|
212
|
+
"tree-sitter-spark>=0.20.0",
|
213
|
+
"tree-sitter-akka>=0.20.0",
|
214
|
+
"tree-sitter-lagom>=0.20.0",
|
215
|
+
"tree-sitter-finagle>=0.20.0",
|
216
|
+
"tree-sitter-scalatra>=0.20.0",
|
217
|
+
"tree-sitter-unfiltered>=0.20.0",
|
218
|
+
"tree-sitter-http4s>=0.20.0",
|
219
|
+
"tree-sitter-cats>=0.20.0",
|
220
|
+
"tree-sitter-monix>=0.20.0",
|
221
|
+
"tree-sitter-zio>=0.20.0",
|
222
|
+
"tree-sitter-fs2>=0.20.0",
|
223
|
+
"tree-sitter-doobie>=0.20.0",
|
224
|
+
"tree-sitter-slick>=0.20.0",
|
225
|
+
"tree-sitter-anorm>=0.20.0",
|
226
|
+
"tree-sitter-squeryl>=0.20.0",
|
227
|
+
"tree-sitter-ebean>=0.20.0",
|
228
|
+
"tree-sitter-hibernate>=0.20.0",
|
229
|
+
"tree-sitter-jpa>=0.20.0",
|
230
|
+
"tree-sitter-mybatis>=0.20.0",
|
231
|
+
"tree-sitter-ibatis>=0.20.0",
|
232
|
+
"tree-sitter-spring-data>=0.20.0",
|
233
|
+
"tree-sitter-spring-boot>=0.20.0",
|
234
|
+
"tree-sitter-spring-cloud>=0.20.0",
|
235
|
+
"tree-sitter-spring-security>=0.20.0",
|
236
|
+
"tree-sitter-spring-batch>=0.20.0",
|
237
|
+
"tree-sitter-spring-integration>=0.20.0",
|
238
|
+
"tree-sitter-spring-session>=0.20.0",
|
239
|
+
"tree-sitter-spring-cache>=0.20.0",
|
240
|
+
"tree-sitter-spring-websocket>=0.20.0",
|
241
|
+
"tree-sitter-spring-messaging>=0.20.0",
|
242
|
+
"tree-sitter-spring-amqp>=0.20.0",
|
243
|
+
"tree-sitter-spring-kafka>=0.20.0",
|
244
|
+
"tree-sitter-spring-cloud-stream>=0.20.0",
|
245
|
+
"tree-sitter-spring-cloud-config>=0.20.0",
|
246
|
+
"tree-sitter-spring-cloud-gateway>=0.20.0",
|
247
|
+
"tree-sitter-spring-cloud-netflix>=0.20.0",
|
248
|
+
"tree-sitter-spring-cloud-consul>=0.20.0",
|
249
|
+
"tree-sitter-spring-cloud-zookeeper>=0.20.0",
|
250
|
+
"tree-sitter-spring-cloud-kubernetes>=0.20.0",
|
251
|
+
"tree-sitter-spring-cloud-openfeign>=0.20.0",
|
252
|
+
"tree-sitter-spring-cloud-ribbon>=0.20.0",
|
253
|
+
"tree-sitter-spring-cloud-hystrix>=0.20.0",
|
254
|
+
"tree-sitter-spring-cloud-sleuth>=0.20.0",
|
255
|
+
"tree-sitter-spring-cloud-zipkin>=0.20.0",
|
256
|
+
"tree-sitter-spring-cloud-bus>=0.20.0",
|
257
|
+
"tree-sitter-spring-cloud-vault>=0.20.0",
|
258
|
+
"tree-sitter-spring-cloud-aws>=0.20.0",
|
259
|
+
"tree-sitter-spring-cloud-gcp>=0.20.0",
|
260
|
+
"tree-sitter-spring-cloud-azure>=0.20.0",
|
261
|
+
"tree-sitter-spring-cloud-alibaba>=0.20.0",
|
262
|
+
"tree-sitter-spring-cloud-tencent>=0.20.0",
|
263
|
+
"tree-sitter-spring-cloud-huawei>=0.20.0",
|
264
|
+
"tree-sitter-spring-cloud-baidu>=0.20.0",
|
265
|
+
"tree-sitter-spring-cloud-jd>=0.20.0",
|
266
|
+
"tree-sitter-spring-cloud-meituan>=0.20.0",
|
267
|
+
"tree-sitter-spring-cloud-didi>=0.20.0",
|
268
|
+
"tree-sitter-spring-cloud-ctrip>=0.20.0",
|
269
|
+
"tree-sitter-spring-cloud-qunar>=0.20.0",
|
270
|
+
"tree-sitter-spring-cloud-tujia>=0.20.0",
|
271
|
+
"tree-sitter-spring-cloud-xiaozhu>=0.20.0",
|
272
|
+
"tree-sitter-spring-cloud-mayi>=0.20.0",
|
273
|
+
"tree-sitter-spring-cloud-ziru>=0.20.0",
|
274
|
+
"tree-sitter-spring-cloud-58>=0.20.0",
|
275
|
+
"tree-sitter-spring-cloud-ganji>=0.20.0",
|
276
|
+
"tree-sitter-spring-cloud-baixing>=0.20.0",
|
277
|
+
"tree-sitter-spring-cloud-anjuke>=0.20.0",
|
278
|
+
"tree-sitter-spring-cloud-lianjia>=0.20.0",
|
279
|
+
"tree-sitter-spring-cloud-fang>=0.20.0",
|
280
|
+
"tree-sitter-spring-cloud-soufun>=0.20.0",
|
281
|
+
"tree-sitter-spring-cloud-5i5j>=0.20.0",
|
282
|
+
"tree-sitter-spring-cloud-zhuge>=0.20.0",
|
283
|
+
"tree-sitter-spring-cloud-woaiwojia>=0.20.0",
|
284
|
+
"tree-sitter-spring-cloud-kufang>=0.20.0",
|
285
|
+
"tree-sitter-spring-cloud-fangdd>=0.20.0",
|
286
|
+
"tree-sitter-spring-cloud-leyoujia>=0.20.0",
|
287
|
+
"tree-sitter-spring-cloud-jiwu>=0.20.0",
|
288
|
+
"tree-sitter-spring-cloud-zhongyuan>=0.20.0",
|
289
|
+
"tree-sitter-spring-cloud-tongcheng>=0.20.0",
|
290
|
+
"tree-sitter-spring-cloud-quna>=0.20.0",
|
291
|
+
"tree-sitter-spring-cloud-elong>=0.20.0",
|
292
|
+
"tree-sitter-spring-cloud-ctrip>=0.20.0",
|
293
|
+
"tree-sitter-spring-cloud-lvmama>=0.20.0",
|
294
|
+
"tree-sitter-spring-cloud-mafengwo>=0.20.0",
|
295
|
+
"tree-sitter-spring-cloud-tuniu>=0.20.0",
|
296
|
+
"tree-sitter-spring-cloud-qyer>=0.20.0",
|
297
|
+
"tree-sitter-spring-cloud-daochu>=0.20.0",
|
298
|
+
"tree-sitter-spring-cloud-mfw>=0.20.0",
|
299
|
+
"tree-sitter-spring-cloud-lx>=0.20.0",
|
300
|
+
"tree-sitter-spring-cloud-fliggy>=0.20.0",
|
301
|
+
"tree-sitter-spring-cloud-alitrip>=0.20.0",
|
302
|
+
"tree-sitter-spring-cloud-trip>=0.20.0",
|
303
|
+
"tree-sitter-spring-cloud-xiecheng>=0.20.0",
|
304
|
+
"tree-sitter-spring-cloud-qunaer>=0.20.0",
|
305
|
+
"tree-sitter-spring-cloud-tongcheng>=0.20.0",
|
306
|
+
"tree-sitter-spring-cloud-lvmama>=0.20.0",
|
307
|
+
"tree-sitter-spring-cloud-mafengwo>=0.20.0",
|
308
|
+
"tree-sitter-spring-cloud-tuniu>=0.20.0",
|
309
|
+
"tree-sitter-spring-cloud-qyer>=0.20.0",
|
310
|
+
"tree-sitter-spring-cloud-daochu>=0.20.0",
|
311
|
+
"tree-sitter-spring-cloud-mfw>=0.20.0",
|
312
|
+
"tree-sitter-spring-cloud-lx>=0.20.0",
|
313
|
+
"tree-sitter-spring-cloud-fliggy>=0.20.0",
|
314
|
+
"tree-sitter-spring-cloud-alitrip>=0.20.0",
|
315
|
+
"tree-sitter-spring-cloud-trip>=0.20.0",
|
316
|
+
"tree-sitter-spring-cloud-xiecheng>=0.20.0",
|
317
|
+
"tree-sitter-spring-cloud-qunaer>=0.20.0",
|
318
|
+
"tree-sitter-spring-cloud-tongcheng>=0.20.0",
|
319
|
+
"tree-sitter-spring-cloud-lvmama>=0.20.0",
|
320
|
+
"tree-sitter-spring-cloud-mafengwo>=0.20.0",
|
321
|
+
"tree-sitter-spring-cloud-tuniu>=0.20.0",
|
322
|
+
"tree-sitter-spring-cloud-qyer>=0.20.0",
|
323
|
+
"tree-sitter-spring-cloud-daochu>=0.20.0",
|
324
|
+
"tree-sitter-spring-cloud-mfw>=0.20.0",
|
325
|
+
"tree-sitter-spring-cloud-lx>=0.20.0",
|
326
|
+
"tree-sitter-spring-cloud-fliggy>=0.20.0",
|
327
|
+
"tree-sitter-spring-cloud-alitrip>=0.20.0",
|
328
|
+
"tree-sitter-spring-cloud-trip>=0.20.0",
|
329
|
+
"tree-sitter-spring-cloud-xiecheng>=0.20.0",
|
330
|
+
"tree-sitter-spring-cloud-qunaer>=0.20.0"
|
331
|
+
]
|
332
|
+
|
333
|
+
[project.urls]
|
334
|
+
Homepage = "https://github.com/ikignosis/janito-coder"
|
335
|
+
Repository = "https://github.com/ikignosis/janito-coder"
|
336
|
+
Documentation = "https://github.com/ikignosis/janito-coder/blob/main/README.md"
|
337
|
+
|
338
|
+
[tool.setuptools.packages.find]
|
339
|
+
where = ["."]
|
340
|
+
include = ["janito_coder*"]
|
341
|
+
|
342
|
+
[tool.setuptools.package-data]
|
343
|
+
"janito_coder.plugins" = ["*.py"]
|
344
|
+
|
345
|
+
[tool.setuptools_scm]
|
346
|
+
version_scheme = "post-release"
|
347
|
+
local_scheme = "node-and-date"
|
@@ -1 +0,0 @@
|
|
1
|
-
janito
|
File without changes
|
File without changes
|
File without changes
|