gitpro 0.3.1__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 (50) hide show
  1. gitpro-0.3.1/.gitignore +14 -0
  2. gitpro-0.3.1/LICENSE +21 -0
  3. gitpro-0.3.1/PKG-INFO +103 -0
  4. gitpro-0.3.1/README.md +79 -0
  5. gitpro-0.3.1/pyproject.toml +46 -0
  6. gitpro-0.3.1/src/gitpro/__init__.py +4 -0
  7. gitpro-0.3.1/src/gitpro/__main__.py +5 -0
  8. gitpro-0.3.1/src/gitpro/agents.py +1928 -0
  9. gitpro-0.3.1/src/gitpro/approval_policy.py +151 -0
  10. gitpro-0.3.1/src/gitpro/args.py +82 -0
  11. gitpro-0.3.1/src/gitpro/audit.py +800 -0
  12. gitpro-0.3.1/src/gitpro/change_contract.py +117 -0
  13. gitpro-0.3.1/src/gitpro/changes.py +853 -0
  14. gitpro-0.3.1/src/gitpro/cli.py +499 -0
  15. gitpro-0.3.1/src/gitpro/clone.py +505 -0
  16. gitpro-0.3.1/src/gitpro/completion.py +407 -0
  17. gitpro-0.3.1/src/gitpro/config.py +517 -0
  18. gitpro-0.3.1/src/gitpro/devcontainer.py +442 -0
  19. gitpro-0.3.1/src/gitpro/discover.py +1579 -0
  20. gitpro-0.3.1/src/gitpro/doctor.py +572 -0
  21. gitpro-0.3.1/src/gitpro/envcmd.py +370 -0
  22. gitpro-0.3.1/src/gitpro/example.toml +102 -0
  23. gitpro-0.3.1/src/gitpro/files.py +139 -0
  24. gitpro-0.3.1/src/gitpro/forge.py +1244 -0
  25. gitpro-0.3.1/src/gitpro/guard.py +1121 -0
  26. gitpro-0.3.1/src/gitpro/health.py +1241 -0
  27. gitpro-0.3.1/src/gitpro/hot.py +38 -0
  28. gitpro-0.3.1/src/gitpro/jsonfile.py +195 -0
  29. gitpro-0.3.1/src/gitpro/jsonout.py +26 -0
  30. gitpro-0.3.1/src/gitpro/keys.py +59 -0
  31. gitpro-0.3.1/src/gitpro/lint.py +50 -0
  32. gitpro-0.3.1/src/gitpro/lost.py +874 -0
  33. gitpro-0.3.1/src/gitpro/mcp.py +1055 -0
  34. gitpro-0.3.1/src/gitpro/operation_contract.py +178 -0
  35. gitpro-0.3.1/src/gitpro/operation_io.py +256 -0
  36. gitpro-0.3.1/src/gitpro/operation_reconcile.py +191 -0
  37. gitpro-0.3.1/src/gitpro/operations.py +841 -0
  38. gitpro-0.3.1/src/gitpro/pin.py +89 -0
  39. gitpro-0.3.1/src/gitpro/plan.py +199 -0
  40. gitpro-0.3.1/src/gitpro/policy.py +1808 -0
  41. gitpro-0.3.1/src/gitpro/prompt.py +304 -0
  42. gitpro-0.3.1/src/gitpro/render.py +474 -0
  43. gitpro-0.3.1/src/gitpro/resolve.py +898 -0
  44. gitpro-0.3.1/src/gitpro/scan.py +358 -0
  45. gitpro-0.3.1/src/gitpro/scanroots.py +146 -0
  46. gitpro-0.3.1/src/gitpro/setup.py +260 -0
  47. gitpro-0.3.1/src/gitpro/trailers.py +218 -0
  48. gitpro-0.3.1/src/gitpro/tui.py +178 -0
  49. gitpro-0.3.1/src/gitpro/undo.py +63 -0
  50. gitpro-0.3.1/src/gitpro/view.py +155 -0
@@ -0,0 +1,14 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .venv/
4
+ build/
5
+ dist/
6
+ *.egg-info/
7
+ .pytest_cache/
8
+
9
+ # Personal configs never belong in this repo.
10
+ gitpro.toml
11
+ identities*.toml
12
+
13
+ # Agent worktrees (local only).
14
+ .worktrees/
gitpro-0.3.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yantrakar and Sandeep Shelke
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
gitpro-0.3.1/PKG-INFO ADDED
@@ -0,0 +1,103 @@
1
+ Metadata-Version: 2.5
2
+ Name: gitpro
3
+ Version: 0.3.1
4
+ Summary: Per-remote git identities (name, email, SSH key, commit signing) from one TOML file
5
+ Project-URL: Homepage, https://github.com/Yantrakar/gitpro
6
+ Project-URL: Documentation, https://github.com/Yantrakar/gitpro/blob/main/docs/guide.md
7
+ Project-URL: Issues, https://github.com/Yantrakar/gitpro/issues
8
+ Author: Yantrakar, Sandeep Shelke
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: git,gitconfig,identity,includeif,signing,ssh
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: MacOS
15
+ Classifier: Operating System :: POSIX :: Linux
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Topic :: Software Development :: Version Control :: Git
18
+ Requires-Python: >=3.9
19
+ Requires-Dist: rich>=13
20
+ Requires-Dist: tomli>=1.1; python_version < '3.11'
21
+ Provides-Extra: tui
22
+ Requires-Dist: textual>=0.80; extra == 'tui'
23
+ Description-Content-Type: text/markdown
24
+
25
+ # gitpro
26
+
27
+ **The right Git identity, SSH key and signature for every repository.**
28
+
29
+ Work on a company repository, commit with your work email. Switch to a personal
30
+ project, use your personal identity. Gitpro chooses by **remote URL**, not by
31
+ where you happened to clone the repository.
32
+
33
+ Useful when you have more than one GitHub/GitLab account, separate work and
34
+ personal keys, or keep finding the wrong email on your commits.
35
+
36
+ ## Try it
37
+
38
+ Requires **Linux or macOS**, Git **2.36+**, Python **3.9+** and OpenSSH.
39
+ Install from [PyPI](https://pypi.org/project/gitpro/) with pipx.
40
+
41
+ ```sh
42
+ pipx install gitpro
43
+ gitpro setup --write
44
+ ```
45
+
46
+ The wizard helps you choose identities, Git hosts and owners, existing SSH keys,
47
+ and optional signing. **No TOML editing is needed for basic setup.** Review the
48
+ configuration before saving; nothing is applied to Git or SSH yet.
49
+
50
+ ```sh
51
+ gitpro plan # see exactly what would change
52
+ gitpro apply -y # explicitly apply the reviewed changes
53
+ ```
54
+
55
+ Then, inside a repository:
56
+
57
+ ```sh
58
+ gitpro why # see the expected identity and anything overriding it
59
+ ```
60
+
61
+ Already have a config? Run `gitpro setup --write` to add another identity without losing
62
+ your existing settings or comments. Prefer editing files? The
63
+ [user guide](docs/guide.md#configuration) covers the full TOML format.
64
+
65
+ ## What you get
66
+
67
+ - **Work/personal separation:** names, emails, SSH keys and signing per host/owner.
68
+ - **Answers, not guesswork:** `gitpro why` explains mismatches and suggests a fix.
69
+ - **A safety net:** optional hooks can block wrong-identity commits and pushes.
70
+ - **Editor and container support:** see your identity in VS Code and carry it into dev containers.
71
+
72
+ Gitpro generates ordinary Git and SSH configuration; it needs no background
73
+ service. Changes can be previewed, existing hand-written files are backed up,
74
+ and key creation or uploads are never part of the setup wizard.
75
+
76
+ ## Using VS Code?
77
+
78
+ Run **gitpro: Set Up Identities** from the Command Palette to open the same wizard
79
+ in a terminal. The extension also shows the current identity and helps find
80
+ repository-level overrides. [Install the extension](vscode/README.md).
81
+
82
+ ## Go further when you need to
83
+
84
+ For agents, [the versioned workflow](docs/agent-workflows.md) provides structured
85
+ preflight, identity-scoped execution and durable idempotency for commits, pushes
86
+ and GitHub PRs. Persistent changes use exact proposals, human approval by default,
87
+ optional operator-scoped preauthorization, and recoverable apply. MCP execution is opt-in.
88
+
89
+ | I want to… | Start here |
90
+ |---|---|
91
+ | Understand matching, SSH keys or signing | [Configuration](docs/guide.md#configuration) |
92
+ | Find wrong identities or forgotten work | [Daily use](docs/guide.md#daily-use) · [Finding things](docs/guide.md#finding-things) |
93
+ | Use dev containers | [Container setup](docs/guide.md#dev-containers) |
94
+ | Configure team policy, CI or AI assistants | [Teams and CI](docs/guide.md#teams) · [AI assistants](docs/guide.md#ai-assistants) |
95
+ | Look up a command or undo changes | [Command reference](docs/guide.md#commands) · [Undo](docs/guide.md#undo-everything) |
96
+ | Troubleshoot or contribute | [Troubleshooting](docs/guide.md#troubleshooting) · [Development](docs/guide.md#development) |
97
+
98
+ The detailed TOML, YAML and command examples live in the guide, not on the
99
+ getting-started path.
100
+
101
+ ## License
102
+
103
+ [MIT](LICENSE)
gitpro-0.3.1/README.md ADDED
@@ -0,0 +1,79 @@
1
+ # gitpro
2
+
3
+ **The right Git identity, SSH key and signature for every repository.**
4
+
5
+ Work on a company repository, commit with your work email. Switch to a personal
6
+ project, use your personal identity. Gitpro chooses by **remote URL**, not by
7
+ where you happened to clone the repository.
8
+
9
+ Useful when you have more than one GitHub/GitLab account, separate work and
10
+ personal keys, or keep finding the wrong email on your commits.
11
+
12
+ ## Try it
13
+
14
+ Requires **Linux or macOS**, Git **2.36+**, Python **3.9+** and OpenSSH.
15
+ Install from [PyPI](https://pypi.org/project/gitpro/) with pipx.
16
+
17
+ ```sh
18
+ pipx install gitpro
19
+ gitpro setup --write
20
+ ```
21
+
22
+ The wizard helps you choose identities, Git hosts and owners, existing SSH keys,
23
+ and optional signing. **No TOML editing is needed for basic setup.** Review the
24
+ configuration before saving; nothing is applied to Git or SSH yet.
25
+
26
+ ```sh
27
+ gitpro plan # see exactly what would change
28
+ gitpro apply -y # explicitly apply the reviewed changes
29
+ ```
30
+
31
+ Then, inside a repository:
32
+
33
+ ```sh
34
+ gitpro why # see the expected identity and anything overriding it
35
+ ```
36
+
37
+ Already have a config? Run `gitpro setup --write` to add another identity without losing
38
+ your existing settings or comments. Prefer editing files? The
39
+ [user guide](docs/guide.md#configuration) covers the full TOML format.
40
+
41
+ ## What you get
42
+
43
+ - **Work/personal separation:** names, emails, SSH keys and signing per host/owner.
44
+ - **Answers, not guesswork:** `gitpro why` explains mismatches and suggests a fix.
45
+ - **A safety net:** optional hooks can block wrong-identity commits and pushes.
46
+ - **Editor and container support:** see your identity in VS Code and carry it into dev containers.
47
+
48
+ Gitpro generates ordinary Git and SSH configuration; it needs no background
49
+ service. Changes can be previewed, existing hand-written files are backed up,
50
+ and key creation or uploads are never part of the setup wizard.
51
+
52
+ ## Using VS Code?
53
+
54
+ Run **gitpro: Set Up Identities** from the Command Palette to open the same wizard
55
+ in a terminal. The extension also shows the current identity and helps find
56
+ repository-level overrides. [Install the extension](vscode/README.md).
57
+
58
+ ## Go further when you need to
59
+
60
+ For agents, [the versioned workflow](docs/agent-workflows.md) provides structured
61
+ preflight, identity-scoped execution and durable idempotency for commits, pushes
62
+ and GitHub PRs. Persistent changes use exact proposals, human approval by default,
63
+ optional operator-scoped preauthorization, and recoverable apply. MCP execution is opt-in.
64
+
65
+ | I want to… | Start here |
66
+ |---|---|
67
+ | Understand matching, SSH keys or signing | [Configuration](docs/guide.md#configuration) |
68
+ | Find wrong identities or forgotten work | [Daily use](docs/guide.md#daily-use) · [Finding things](docs/guide.md#finding-things) |
69
+ | Use dev containers | [Container setup](docs/guide.md#dev-containers) |
70
+ | Configure team policy, CI or AI assistants | [Teams and CI](docs/guide.md#teams) · [AI assistants](docs/guide.md#ai-assistants) |
71
+ | Look up a command or undo changes | [Command reference](docs/guide.md#commands) · [Undo](docs/guide.md#undo-everything) |
72
+ | Troubleshoot or contribute | [Troubleshooting](docs/guide.md#troubleshooting) · [Development](docs/guide.md#development) |
73
+
74
+ The detailed TOML, YAML and command examples live in the guide, not on the
75
+ getting-started path.
76
+
77
+ ## License
78
+
79
+ [MIT](LICENSE)
@@ -0,0 +1,46 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.26"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "gitpro"
7
+ dynamic = ["version"]
8
+ description = "Per-remote git identities (name, email, SSH key, commit signing) from one TOML file"
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ license-files = ["LICENSE"]
12
+ authors = [{ name = "Yantrakar" }, { name = "Sandeep Shelke" }]
13
+ requires-python = ">=3.9"
14
+ dependencies = ['tomli>=1.1; python_version < "3.11"', "rich>=13"]
15
+ keywords = ["git", "ssh", "identity", "gitconfig", "includeif", "signing"]
16
+ classifiers = [
17
+ "Environment :: Console",
18
+ "Intended Audience :: Developers",
19
+ "Operating System :: MacOS",
20
+ "Operating System :: POSIX :: Linux",
21
+ "Programming Language :: Python :: 3",
22
+ "Topic :: Software Development :: Version Control :: Git",
23
+ ]
24
+
25
+ [project.optional-dependencies]
26
+ tui = ["textual>=0.80"] # interactive scan --fix
27
+
28
+ [project.urls]
29
+ Homepage = "https://github.com/Yantrakar/gitpro"
30
+ Documentation = "https://github.com/Yantrakar/gitpro/blob/main/docs/guide.md"
31
+ Issues = "https://github.com/Yantrakar/gitpro/issues"
32
+
33
+ [project.scripts]
34
+ gitpro = "gitpro.hot:main"
35
+
36
+ [tool.hatch.version]
37
+ path = "src/gitpro/__init__.py"
38
+
39
+ [tool.hatch.build.targets.wheel]
40
+ packages = ["src/gitpro"]
41
+
42
+ [tool.hatch.build.targets.sdist]
43
+ include = ["/src/gitpro", "/README.md", "/LICENSE"]
44
+
45
+ [tool.pytest.ini_options]
46
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ """Per-remote git identities generated from one TOML file (see cli.py)."""
2
+ from __future__ import annotations
3
+
4
+ __version__ = "0.3.1"
@@ -0,0 +1,5 @@
1
+ import sys
2
+
3
+ from .hot import main
4
+
5
+ sys.exit(main())