town-elder 0.1.0__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.
@@ -0,0 +1,20 @@
1
+ Metadata-Version: 2.4
2
+ Name: town-elder
3
+ Version: 0.1.0
4
+ Summary: A semantic git CLI tool using zvec + fastembed
5
+ Author: Kalle Bylin
6
+ License-Expression: MIT
7
+ Requires-Dist: typer[all]>=0.12.0
8
+ Requires-Dist: zvec>=0.1.0
9
+ Requires-Dist: fastembed>=0.2.0
10
+ Requires-Dist: pydantic>=2.0
11
+ Requires-Dist: pydantic-settings>=2.0
12
+ Requires-Dist: rich>=13.0
13
+ Requires-Dist: python-dotenv>=1.0.0
14
+ Requires-Dist: numpy>=1.20
15
+ Requires-Dist: pytest>=7.0 ; extra == 'dev'
16
+ Requires-Dist: pytest-cov>=4.0 ; extra == 'dev'
17
+ Requires-Dist: ruff>=0.3 ; extra == 'dev'
18
+ Requires-Dist: mypy>=1.0 ; extra == 'dev'
19
+ Requires-Python: >=3.10
20
+ Provides-Extra: dev
@@ -0,0 +1,96 @@
1
+ [project]
2
+ name = "town-elder"
3
+ version = "0.1.0"
4
+ description = "A semantic git CLI tool using zvec + fastembed"
5
+ license = "MIT"
6
+ authors = [{ name = "Kalle Bylin" }]
7
+ requires-python = ">=3.10"
8
+ dependencies = [
9
+ "typer[all]>=0.12.0",
10
+ "zvec>=0.1.0",
11
+ "fastembed>=0.2.0",
12
+ "pydantic>=2.0",
13
+ "pydantic-settings>=2.0",
14
+ "rich>=13.0",
15
+ "python-dotenv>=1.0.0",
16
+ "numpy>=1.20",
17
+ ]
18
+
19
+ [project.optional-dependencies]
20
+ dev = [
21
+ "pytest>=7.0",
22
+ "pytest-cov>=4.0",
23
+ "ruff>=0.3",
24
+ "mypy>=1.0",
25
+ ]
26
+
27
+ [project.scripts]
28
+ te = "town_elder.cli:run"
29
+
30
+ [build-system]
31
+ requires = ["uv_build>=0.7.21,<0.8.0"]
32
+ build-backend = "uv_build"
33
+
34
+ [[tool.uv.index]]
35
+ name = "testpypi"
36
+ url = "https://test.pypi.org/simple/"
37
+ publish-url = "https://test.pypi.org/legacy/"
38
+ explicit = true
39
+
40
+ [tool.pytest.ini_options]
41
+ testpaths = ["tests"]
42
+ pythonpath = ["src"]
43
+ addopts = "-v --tb=short"
44
+
45
+ [tool.ruff]
46
+ target-version = "py310"
47
+ exclude = [
48
+ ".venv",
49
+ "venv",
50
+ "__pycache__",
51
+ ".git",
52
+ "build",
53
+ "dist",
54
+ ]
55
+
56
+ [tool.ruff.lint]
57
+ select = [
58
+ # Core Security & Logic
59
+ "F", # Pyflakes (catches "hallucinated" variables and unused imports)
60
+ "E", # pycodestyle errors
61
+ "W", # pycodestyle warnings
62
+ "B", # flake8-bugbear (catches common bugs, e.g., mutable defaults)
63
+ "S", # flake8-bandit (security checks - agents LOVE hardcoding secrets)
64
+
65
+ # Modernization (Agents often write outdated Python)
66
+ "UP", # pyupgrade (forces modern syntax, e.g., pathlib over os.path)
67
+ "I", # isort (keeps imports tidy)
68
+
69
+ # Anti-Verbosity & Cleanliness (Agents are chatty coders)
70
+ "SIM", # flake8-simplify (removes useless code like `if x: return True`)
71
+ "RET", # flake8-return (fixes messy return logic)
72
+ "C4", # flake8-comprehensions (forces list/dict comprehensions)
73
+ "ARG", # flake8-unused-arguments (agents often hallucinate unused params)
74
+ "ERA", # eradicate (removes commented-out code - agents leave "notes" behind)
75
+
76
+ # Specific Pylint Rules (The Heavy Hitters)
77
+ "PLC0415", # Import outside top-level (The one you found!)
78
+ "PLR0912", # Too many branches (prevents spaghetti logic)
79
+ "PLR0913", # Too many arguments (forces cleaner function signatures)
80
+ "PLR2004", # Magic value comparison (stops `if x == 42`)
81
+ ]
82
+ ignore = [
83
+ "E501", # line too long (handled by formatter)
84
+ "B008", # do not perform function calls in argument defaults
85
+ "B904", # exception chaining - typer.Exit replaces original exception intentionally
86
+ "S103", # os.chmod for setting executable bits on hook files is intentional
87
+ "S110", # try/except pass for ignoring invalid state file is intentional
88
+ "PLC0415", # lazy imports for optional dependencies
89
+ "ARG001", # unused CLI options - placeholder for future implementation
90
+ ]
91
+
92
+ [tool.ruff.lint.per-file-ignores]
93
+ "tests/*" = ["S101", "S603", "S607", "B011"] # assert and subprocess calls are fine in tests
94
+
95
+ [tool.ruff.lint.isort]
96
+ known-first-party = ["town_elder"]
@@ -0,0 +1,6 @@
1
+ """town_elder - Semantic git CLI tool using zvec + fastembed."""
2
+ from town_elder.models import Chunk, Document, SearchResult
3
+
4
+ __version__ = "0.1.0"
5
+
6
+ __all__ = ["Chunk", "Document", "SearchResult"]
@@ -0,0 +1,6 @@
1
+ """Module entry point for `python -m town_elder`."""
2
+
3
+ from town_elder.cli import run
4
+
5
+ if __name__ == "__main__":
6
+ run()