gitglimpse 0.1.5__tar.gz → 0.1.6__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.
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/PKG-INFO +1 -1
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/pyproject.toml +1 -1
- gitglimpse-0.1.6/src/gitglimpse/__init__.py +1 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/cli.py +44 -0
- gitglimpse-0.1.5/src/gitglimpse/__init__.py +0 -1
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/.gitignore +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/LICENSE +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/PYPI_README.md +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/commands/__init__.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/commands/pr.md +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/commands/report.md +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/commands/standup.md +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/commands/week.md +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/config.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/estimation.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/formatters/__init__.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/formatters/json.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/formatters/markdown.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/formatters/pr.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/formatters/template.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/git.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/grouping.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/onboarding.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/providers/__init__.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/providers/base.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/providers/claude.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/providers/gemini.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/providers/local.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/providers/openai.py +0 -0
- {gitglimpse-0.1.5 → gitglimpse-0.1.6}/src/gitglimpse/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitglimpse
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.6
|
|
4
4
|
Summary: Extract structured context from your git history — PR descriptions, standups, weekly reports, and LLM-ready JSON.
|
|
5
5
|
Project-URL: Homepage, https://github.com/dino/gitglimpse
|
|
6
6
|
Project-URL: Repository, https://github.com/dino/gitglimpse
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "gitglimpse"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.6"
|
|
8
8
|
description = "Extract structured context from your git history — PR descriptions, standups, weekly reports, and LLM-ready JSON."
|
|
9
9
|
readme = "PYPI_README.md"
|
|
10
10
|
authors = [{ name = "Dino" }]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.6"
|
|
@@ -301,6 +301,35 @@ def _print_status_line(
|
|
|
301
301
|
console.print("[dim]" + " · ".join(parts) + "[/dim]", highlight=False)
|
|
302
302
|
|
|
303
303
|
|
|
304
|
+
_PROVIDER_DEFAULTS: dict[str, dict[str, str]] = {
|
|
305
|
+
"openai": {"api_key_env": "OPENAI_API_KEY", "model": "gpt-4o-mini", "mode": "api"},
|
|
306
|
+
"anthropic": {"api_key_env": "ANTHROPIC_API_KEY", "model": "claude-sonnet-4-20250514", "mode": "api"},
|
|
307
|
+
"gemini": {"api_key_env": "GEMINI_API_KEY", "model": "gemini-2.5-flash", "mode": "api"},
|
|
308
|
+
"local": {"api_key_env": "", "model": "qwen2.5-coder:latest", "mode": "local-llm"},
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
def _apply_provider_override(
|
|
313
|
+
cfg: Config,
|
|
314
|
+
provider_name: Optional[str],
|
|
315
|
+
model_override: Optional[str],
|
|
316
|
+
) -> None:
|
|
317
|
+
"""Mutate *cfg* in-place when --provider is passed on the CLI."""
|
|
318
|
+
if not provider_name:
|
|
319
|
+
return
|
|
320
|
+
defaults = _PROVIDER_DEFAULTS.get(provider_name)
|
|
321
|
+
if defaults is None:
|
|
322
|
+
_stderr_console.print(
|
|
323
|
+
f"[bold red]Error:[/bold red] Unknown provider '{provider_name}'. "
|
|
324
|
+
f"Choose from: {', '.join(_PROVIDER_DEFAULTS)}"
|
|
325
|
+
)
|
|
326
|
+
raise typer.Exit(1)
|
|
327
|
+
cfg.default_mode = defaults["mode"]
|
|
328
|
+
cfg.llm_provider = provider_name if provider_name != "local" else None
|
|
329
|
+
cfg.api_key_env = defaults["api_key_env"] or None
|
|
330
|
+
cfg.llm_model = model_override or defaults["model"]
|
|
331
|
+
|
|
332
|
+
|
|
304
333
|
def _resolve_provider(
|
|
305
334
|
cfg: Config,
|
|
306
335
|
use_local: bool,
|
|
@@ -381,6 +410,10 @@ def standup(
|
|
|
381
410
|
Optional[str],
|
|
382
411
|
typer.Option("--output", "-o", help="Save output to file instead of printing."),
|
|
383
412
|
] = None,
|
|
413
|
+
provider: Annotated[
|
|
414
|
+
Optional[str],
|
|
415
|
+
typer.Option("--provider", help="LLM provider override: openai, anthropic, gemini, local.", hidden=True),
|
|
416
|
+
] = None,
|
|
384
417
|
skip_setup: Annotated[
|
|
385
418
|
bool,
|
|
386
419
|
typer.Option("--skip-setup", help="Skip first-run onboarding.", hidden=True),
|
|
@@ -397,6 +430,7 @@ def standup(
|
|
|
397
430
|
glimpse standup --repos "api,frontend,landing"
|
|
398
431
|
"""
|
|
399
432
|
cfg = _load_or_onboard(skip_setup)
|
|
433
|
+
_apply_provider_override(cfg, provider, model)
|
|
400
434
|
effective = _effective_since(since, cfg.default_since)
|
|
401
435
|
ctx_mode = context or cfg.context_mode
|
|
402
436
|
resolved_author = _resolve_author(author, cfg.author_email)
|
|
@@ -539,6 +573,10 @@ def week(
|
|
|
539
573
|
typer.Option("--filter-noise/--no-filter-noise",
|
|
540
574
|
help="Filter out noise commits (merges, formatting, lock files)."),
|
|
541
575
|
] = None,
|
|
576
|
+
provider: Annotated[
|
|
577
|
+
Optional[str],
|
|
578
|
+
typer.Option("--provider", help="LLM provider override: openai, anthropic, gemini, local.", hidden=True),
|
|
579
|
+
] = None,
|
|
542
580
|
skip_setup: Annotated[
|
|
543
581
|
bool,
|
|
544
582
|
typer.Option("--skip-setup", help="Skip first-run onboarding.", hidden=True),
|
|
@@ -553,6 +591,7 @@ def week(
|
|
|
553
591
|
glimpse week --json
|
|
554
592
|
"""
|
|
555
593
|
cfg = _load_or_onboard(skip_setup)
|
|
594
|
+
_apply_provider_override(cfg, provider, model)
|
|
556
595
|
ctx_mode = context or cfg.context_mode
|
|
557
596
|
resolved_author = _resolve_author(author, cfg.author_email)
|
|
558
597
|
do_filter = filter_noise if filter_noise is not None else cfg.filter_noise
|
|
@@ -661,6 +700,10 @@ def pr(
|
|
|
661
700
|
typer.Option("--filter-noise/--no-filter-noise",
|
|
662
701
|
help="Filter out noise commits (merges, formatting, lock files)."),
|
|
663
702
|
] = None,
|
|
703
|
+
provider: Annotated[
|
|
704
|
+
Optional[str],
|
|
705
|
+
typer.Option("--provider", help="LLM provider override: openai, anthropic, gemini, local.", hidden=True),
|
|
706
|
+
] = None,
|
|
664
707
|
skip_setup: Annotated[
|
|
665
708
|
bool,
|
|
666
709
|
typer.Option("--skip-setup", help="Skip first-run onboarding.", hidden=True),
|
|
@@ -676,6 +719,7 @@ def pr(
|
|
|
676
719
|
glimpse pr --context diffs
|
|
677
720
|
"""
|
|
678
721
|
cfg = _load_or_onboard(skip_setup)
|
|
722
|
+
_apply_provider_override(cfg, provider, model)
|
|
679
723
|
# PR defaults to "both" context for richer output, unless explicitly overridden.
|
|
680
724
|
ctx_mode = context or "both"
|
|
681
725
|
do_filter = filter_noise if filter_noise is not None else cfg.filter_noise
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.5"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|