dug-cli 0.1.3__tar.gz → 0.1.4__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 (30) hide show
  1. {dug_cli-0.1.3 → dug_cli-0.1.4}/.github/workflows/release.yml +2 -2
  2. {dug_cli-0.1.3 → dug_cli-0.1.4}/PKG-INFO +2 -6
  3. {dug_cli-0.1.3 → dug_cli-0.1.4}/pyproject.toml +2 -3
  4. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/embeddings.py +6 -13
  5. {dug_cli-0.1.3 → dug_cli-0.1.4}/.github/homebrew/dug-cli.rb +0 -0
  6. {dug_cli-0.1.3 → dug_cli-0.1.4}/.github/scoop/dug-cli.json +0 -0
  7. {dug_cli-0.1.3 → dug_cli-0.1.4}/.github/workflows/update-homebrew.yml +0 -0
  8. {dug_cli-0.1.3 → dug_cli-0.1.4}/.gitignore +0 -0
  9. {dug_cli-0.1.3 → dug_cli-0.1.4}/.python-version +0 -0
  10. {dug_cli-0.1.3 → dug_cli-0.1.4}/LICENSE +0 -0
  11. {dug_cli-0.1.3 → dug_cli-0.1.4}/README.md +0 -0
  12. {dug_cli-0.1.3 → dug_cli-0.1.4}/RELEASING.md +0 -0
  13. {dug_cli-0.1.3 → dug_cli-0.1.4}/TODO.md +0 -0
  14. {dug_cli-0.1.3 → dug_cli-0.1.4}/install.sh +0 -0
  15. {dug_cli-0.1.3 → dug_cli-0.1.4}/main.py +0 -0
  16. {dug_cli-0.1.3 → dug_cli-0.1.4}/plan.md +0 -0
  17. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/__init__.py +0 -0
  18. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/__main__.py +0 -0
  19. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/chunker.py +0 -0
  20. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/config.py +0 -0
  21. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/git_context.py +0 -0
  22. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/graph.py +0 -0
  23. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/history.py +0 -0
  24. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/hooks.py +0 -0
  25. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/indexer.py +0 -0
  26. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/prompt_builder.py +0 -0
  27. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/retriever.py +0 -0
  28. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/vector_store.py +0 -0
  29. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/verifier.py +0 -0
  30. {dug_cli-0.1.3 → dug_cli-0.1.4}/src/dug/watcher.py +0 -0
@@ -73,13 +73,13 @@ jobs:
73
73
  --onefile
74
74
  --name dug
75
75
  --collect-submodules dug
76
+ --collect-all fastembed
77
+ --collect-all onnxruntime
76
78
  --hidden-import=dug.__main__
77
79
  --exclude-module torch
78
80
  --exclude-module transformers
79
81
  --exclude-module sentence_transformers
80
82
  --exclude-module tokenizers
81
- --exclude-module scipy
82
- --exclude-module sklearn
83
83
  --exclude-module openai
84
84
  main.py
85
85
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dug-cli
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: Dig into any bug with full codebase context — zero LLM calls
5
5
  Project-URL: Homepage, https://github.com/ratishjain12/dug
6
6
  Project-URL: Repository, https://github.com/ratishjain12/dug
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Topic :: Software Development :: Debuggers
21
21
  Requires-Python: >=3.10
22
22
  Requires-Dist: click
23
+ Requires-Dist: fastembed
23
24
  Requires-Dist: lancedb
24
25
  Requires-Dist: networkx
25
26
  Requires-Dist: tree-sitter-java
@@ -28,11 +29,6 @@ Requires-Dist: tree-sitter-python
28
29
  Requires-Dist: tree-sitter-typescript>=0.23.2
29
30
  Requires-Dist: tree-sitter>=0.22
30
31
  Requires-Dist: watchdog
31
- Provides-Extra: all
32
- Requires-Dist: openai; extra == 'all'
33
- Requires-Dist: sentence-transformers; extra == 'all'
34
- Provides-Extra: local
35
- Requires-Dist: sentence-transformers; extra == 'local'
36
32
  Provides-Extra: openai
37
33
  Requires-Dist: openai; extra == 'openai'
38
34
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dug-cli"
3
- version = "0.1.3"
3
+ version = "0.1.4"
4
4
  description = "Dig into any bug with full codebase context — zero LLM calls"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -28,6 +28,7 @@ dependencies = [
28
28
  "tree-sitter-typescript>=0.23.2",
29
29
  "lancedb",
30
30
  "watchdog",
31
+ "fastembed",
31
32
  ]
32
33
 
33
34
  [project.urls]
@@ -36,9 +37,7 @@ Repository = "https://github.com/ratishjain12/dug"
36
37
  "Bug Tracker" = "https://github.com/ratishjain12/dug/issues"
37
38
 
38
39
  [project.optional-dependencies]
39
- local = ["sentence-transformers"]
40
40
  openai = ["openai"]
41
- all = ["sentence-transformers", "openai"]
42
41
 
43
42
  [project.scripts]
44
43
  dug = "dug.__main__:cli"
@@ -15,14 +15,13 @@ warnings.filterwarnings("ignore", category=UserWarning, module="huggingface_hub"
15
15
  warnings.filterwarnings("ignore", category=FutureWarning, module="transformers")
16
16
 
17
17
  for _noisy in ("sentence_transformers", "huggingface_hub", "transformers",
18
- "torch", "tokenizers"):
18
+ "torch", "tokenizers", "fastembed"):
19
19
  logging.getLogger(_noisy).setLevel(logging.ERROR)
20
20
 
21
21
  # ---------------------------------------------------------------------------
22
- # Dependency installer
22
+ # Dependency installer (OpenAI only — fastembed is a base dep)
23
23
  # ---------------------------------------------------------------------------
24
24
 
25
- _LOCAL_DEPS = ["sentence-transformers"]
26
25
  _OPENAI_DEPS = ["openai"]
27
26
 
28
27
 
@@ -40,14 +39,9 @@ def _ensure_installed(packages: list[str], label: str) -> None:
40
39
  if not missing:
41
40
  return
42
41
 
43
- # PyInstaller binary: sys.executable is the frozen binary, not Python
44
42
  if getattr(sys, "frozen", False):
45
43
  print(f"\n[dug] Running as a standalone binary — cannot auto-install {label} packages.")
46
- print(f"[dug] Switch to OpenAI embeddings instead:")
47
- print(f" dug config set embedding_mode openai")
48
- print(f" dug config set api_key <your-openai-key>")
49
- print(f"[dug] Or reinstall dug via pipx for local embeddings:")
50
- print(f" pipx install dug-cli")
44
+ print(f"[dug] Install via pipx instead: pipx install dug-cli")
51
45
  sys.exit(1)
52
46
 
53
47
  print(f"\n[dug] {label} dependencies not found: {', '.join(missing)}")
@@ -72,12 +66,11 @@ def _ensure_installed(packages: list[str], label: str) -> None:
72
66
 
73
67
  class LocalEmbedder:
74
68
  def __init__(self):
75
- _ensure_installed(_LOCAL_DEPS, "Local embedding")
76
- from sentence_transformers import SentenceTransformer
77
- self.model = SentenceTransformer("all-MiniLM-L6-v2")
69
+ from fastembed import TextEmbedding
70
+ self.model = TextEmbedding("sentence-transformers/all-MiniLM-L6-v2")
78
71
 
79
72
  def embed(self, text: str) -> list[float]:
80
- return self.model.encode(text).tolist()
73
+ return list(self.model.embed([text]))[0].tolist()
81
74
 
82
75
 
83
76
  class OpenAIEmbedder:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes