AllGitStatus 0.14.9__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,149 @@
1
+ Metadata-Version: 2.3
2
+ Name: AllGitStatus
3
+ Version: 0.14.9
4
+ Summary: Checks the git status for all repositories found under the specified directory.
5
+ Author: David Brownell
6
+ Author-email: David Brownell <github@davidbrownell.com>
7
+ License: MIT
8
+ Classifier: Operating System :: MacOS
9
+ Classifier: Operating System :: Microsoft :: Windows
10
+ Classifier: Operating System :: POSIX :: Linux
11
+ Classifier: Programming Language :: Python
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Requires-Dist: aiohttp>=3.13.3
14
+ Requires-Dist: dbrownell-common>=0.16.0
15
+ Requires-Dist: textual>=5.3.0
16
+ Requires-Dist: typer>=0.16.1
17
+ Requires-Python: >=3.13
18
+ Project-URL: Homepage, https://github.com/davidbrownell/AllGitStatus
19
+ Project-URL: Documentation, https://github.com/davidbrownell/AllGitStatus
20
+ Project-URL: Repository, https://github.com/davidbrownell/AllGitStatus
21
+ Description-Content-Type: text/markdown
22
+
23
+ **Project:**
24
+ [![License](https://img.shields.io/github/license/davidbrownell/AllGitStatus?color=dark-green)](https://github.com/davidbrownell/AllGitStatus/blob/main/LICENSE)
25
+
26
+ **Package:**
27
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/AllGitStatus?color=dark-green)](https://pypi.org/project/AllGitStatus/)
28
+ [![PyPI - Version](https://img.shields.io/pypi/v/AllGitStatus?color=dark-green)](https://pypi.org/project/AllGitStatus/)
29
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/AllGitStatus)](https://pypistats.org/packages/allgitstatus)
30
+
31
+ **Development:**
32
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
33
+ [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
34
+ [![ty](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json)](https://github.com/astral-sh/ty)
35
+ [![pytest](https://img.shields.io/badge/pytest-enabled-brightgreen)](https://docs.pytest.org/)
36
+ [![CI](https://github.com/davidbrownell/AllGitStatus/actions/workflows/CICD.yml/badge.svg)](https://github.com/davidbrownell/AllGitStatus/actions/workflows/CICD.yml)
37
+ [![Code Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/davidbrownell/f15146b1b8fdc0a5d45ac0eb786a84f7/raw/AllGitStatus_code_coverage.json)](https://github.com/davidbrownell/AllGitStatus/actions)
38
+ [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/davidbrownell/AllGitStatus?color=dark-green)](https://github.com/davidbrownell/AllGitStatus/commits/main/)
39
+
40
+ <!-- Content above this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
41
+
42
+ ## Contents
43
+ - [Overview](#overview)
44
+ - [Installation](#installation)
45
+ - [Development](#development)
46
+ - [Additional Information](#additional-information)
47
+ - [License](#license)
48
+
49
+ ## Overview
50
+ `AllGitStatus` is a [Text-based user interface](https://en.wikipedia.org/wiki/Text-based_user_interface) (TUI) application that displays the git status of all repositories found under a specified directory. Perfect for developers managing multiple repositories who need a quick, comprehensive overview of their project states without navigating into each one individually.
51
+
52
+ <img width="1689" height="977" alt="screenshot" src="https://github.com/user-attachments/assets/78ea504e-de51-4840-b448-c1cc4d6c78f3" />
53
+
54
+ [Screenshot of `AllGitStatus`]
55
+
56
+ https://github.com/user-attachments/assets/596e3791-ce25-4872-8102-a004c22e5286
57
+
58
+ [Demo of `AllGitStatus`]
59
+
60
+ ### Features
61
+
62
+ #### Local Git Information:
63
+
64
+ - Current branch name with detached HEAD detection
65
+ - Local changes summary (staged โœ…, unstaged ๐ŸŸก, untracked โ“)
66
+ - Stash count (๐Ÿงบ)
67
+ - Remote sync status showing commits to push (๐Ÿ”ผ) or pull (๐Ÿ”ฝ)
68
+
69
+
70
+ #### GitHub Integration (when a GitHub PAT is provided):
71
+
72
+ - Stars (โญ), forks (๐Ÿด), and watchers (๐Ÿ‘€) count
73
+ - Open issues with labels and authors (๐Ÿ›)
74
+ - Open pull requests with draft status (๐Ÿ”€)
75
+ - Security/Dependabot alerts with severity breakdown (๐Ÿ”’๐Ÿ””โš ๏ธ๐Ÿšจ)
76
+ - CI/CD workflow status (โœ…โŒโณ)
77
+ - Repository archived status (๐Ÿ“ฆ)
78
+
79
+ ### How to use `AllGitStatus`
80
+
81
+ Run directly with `uvx` (no installation required):
82
+
83
+ #### Check all repositories under the current directory
84
+ `uvx AllGitStatus`
85
+
86
+ #### Check repositories under a specific directory
87
+ `uvx AllGitStatus /path/to/projects`
88
+
89
+ #### Enable GitHub integration with a Personal Access Token (NOT RECOMMENDED)
90
+ `uvx AllGitStatus --pat ghp_your_token_here`
91
+
92
+ #### The PAT can also be a path to a file containing the token (RECOMMENDED)
93
+ `uvx AllGitStatus --pat ~/.github_pat`
94
+
95
+ #### Or use an environment variable for the PAT
96
+ ```
97
+ export ALLGITSTATUS_PAT=ghp_your_token_or_filename_here
98
+ uvx AllGitStatus
99
+ ```
100
+
101
+ #### Enable debug mode for troubleshooting
102
+ `uvx AllGitStatus --debug`
103
+
104
+ #### Running as a python package
105
+
106
+ Install `AllGitStatus` as a python package using the [instructions below](#installation).
107
+
108
+ | Command Line | Scenario |
109
+ | --- | --- |
110
+ | `AllGitStatus` | To run using the current directory as the root of all git repositories. |
111
+ | `AllGitStatus <path to directory>` | To run using the specified directory as the root of all git repositories. |
112
+
113
+ <!-- Content below this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
114
+
115
+ ## Installation
116
+
117
+ Note that installation is not required when running `AllGitStatus` via `uvx`.
118
+
119
+ | Installation Method | Command |
120
+ | --- | --- |
121
+ | Via [uv](https://github.com/astral-sh/uv) | `uv add AllGitStatus` |
122
+ | Via [pip](https://pip.pypa.io/en/stable/) | `pip install AllGitStatus` |
123
+
124
+ ### Verifying Signed Artifacts
125
+ Artifacts are signed and verified using [py-minisign](https://github.com/x13a/py-minisign) and the public key in the file `./minisign_key.pub`.
126
+
127
+ To verify that an artifact is valid, visit [the latest release](https://github.com/davidbrownell/AllGitStatus/releases/latest) and download the `.minisign` signature file that corresponds to the artifact, then run the following command, replacing `<filename>` with the name of the artifact to be verified:
128
+
129
+ ```shell
130
+ uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>'); print('The file has been verified.')"
131
+ ```
132
+
133
+ ## Development
134
+ Please visit [Contributing](https://github.com/davidbrownell/AllGitStatus/blob/main/CONTRIBUTING.md) and [Development](https://github.com/davidbrownell/AllGitStatus/blob/main/DEVELOPMENT.md) for information on contributing to this project.
135
+
136
+ ## Additional Information
137
+ Additional information can be found at these locations.
138
+
139
+ | Title | Document | Description |
140
+ | --- | --- | --- |
141
+ | Code of Conduct | [CODE_OF_CONDUCT.md](https://github.com/davidbrownell/AllGitStatus/blob/main/CODE_OF_CONDUCT.md) | Information about the norms, rules, and responsibilities we adhere to when participating in this open source community. |
142
+ | Contributing | [CONTRIBUTING.md](https://github.com/davidbrownell/AllGitStatus/blob/main/CONTRIBUTING.md) | Information about contributing to this project. |
143
+ | Development | [DEVELOPMENT.md](https://github.com/davidbrownell/AllGitStatus/blob/main/DEVELOPMENT.md) | Information about development activities involved in making changes to this project. |
144
+ | Governance | [GOVERNANCE.md](https://github.com/davidbrownell/AllGitStatus/blob/main/GOVERNANCE.md) | Information about how this project is governed. |
145
+ | Maintainers | [MAINTAINERS.md](https://github.com/davidbrownell/AllGitStatus/blob/main/MAINTAINERS.md) | Information about individuals who maintain this project. |
146
+ | Security | [SECURITY.md](https://github.com/davidbrownell/AllGitStatus/blob/main/SECURITY.md) | Information about how to privately report security issues associated with this project. |
147
+
148
+ ## License
149
+ `AllGitStatus` is licensed under the <a href="https://choosealicense.com/licenses/MIT/" target="_blank">MIT</a> license.
@@ -0,0 +1,127 @@
1
+ **Project:**
2
+ [![License](https://img.shields.io/github/license/davidbrownell/AllGitStatus?color=dark-green)](https://github.com/davidbrownell/AllGitStatus/blob/main/LICENSE)
3
+
4
+ **Package:**
5
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/AllGitStatus?color=dark-green)](https://pypi.org/project/AllGitStatus/)
6
+ [![PyPI - Version](https://img.shields.io/pypi/v/AllGitStatus?color=dark-green)](https://pypi.org/project/AllGitStatus/)
7
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/AllGitStatus)](https://pypistats.org/packages/allgitstatus)
8
+
9
+ **Development:**
10
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
11
+ [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
12
+ [![ty](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json)](https://github.com/astral-sh/ty)
13
+ [![pytest](https://img.shields.io/badge/pytest-enabled-brightgreen)](https://docs.pytest.org/)
14
+ [![CI](https://github.com/davidbrownell/AllGitStatus/actions/workflows/CICD.yml/badge.svg)](https://github.com/davidbrownell/AllGitStatus/actions/workflows/CICD.yml)
15
+ [![Code Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/davidbrownell/f15146b1b8fdc0a5d45ac0eb786a84f7/raw/AllGitStatus_code_coverage.json)](https://github.com/davidbrownell/AllGitStatus/actions)
16
+ [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/davidbrownell/AllGitStatus?color=dark-green)](https://github.com/davidbrownell/AllGitStatus/commits/main/)
17
+
18
+ <!-- Content above this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
19
+
20
+ ## Contents
21
+ - [Overview](#overview)
22
+ - [Installation](#installation)
23
+ - [Development](#development)
24
+ - [Additional Information](#additional-information)
25
+ - [License](#license)
26
+
27
+ ## Overview
28
+ `AllGitStatus` is a [Text-based user interface](https://en.wikipedia.org/wiki/Text-based_user_interface) (TUI) application that displays the git status of all repositories found under a specified directory. Perfect for developers managing multiple repositories who need a quick, comprehensive overview of their project states without navigating into each one individually.
29
+
30
+ <img width="1689" height="977" alt="screenshot" src="https://github.com/user-attachments/assets/78ea504e-de51-4840-b448-c1cc4d6c78f3" />
31
+
32
+ [Screenshot of `AllGitStatus`]
33
+
34
+ https://github.com/user-attachments/assets/596e3791-ce25-4872-8102-a004c22e5286
35
+
36
+ [Demo of `AllGitStatus`]
37
+
38
+ ### Features
39
+
40
+ #### Local Git Information:
41
+
42
+ - Current branch name with detached HEAD detection
43
+ - Local changes summary (staged โœ…, unstaged ๐ŸŸก, untracked โ“)
44
+ - Stash count (๐Ÿงบ)
45
+ - Remote sync status showing commits to push (๐Ÿ”ผ) or pull (๐Ÿ”ฝ)
46
+
47
+
48
+ #### GitHub Integration (when a GitHub PAT is provided):
49
+
50
+ - Stars (โญ), forks (๐Ÿด), and watchers (๐Ÿ‘€) count
51
+ - Open issues with labels and authors (๐Ÿ›)
52
+ - Open pull requests with draft status (๐Ÿ”€)
53
+ - Security/Dependabot alerts with severity breakdown (๐Ÿ”’๐Ÿ””โš ๏ธ๐Ÿšจ)
54
+ - CI/CD workflow status (โœ…โŒโณ)
55
+ - Repository archived status (๐Ÿ“ฆ)
56
+
57
+ ### How to use `AllGitStatus`
58
+
59
+ Run directly with `uvx` (no installation required):
60
+
61
+ #### Check all repositories under the current directory
62
+ `uvx AllGitStatus`
63
+
64
+ #### Check repositories under a specific directory
65
+ `uvx AllGitStatus /path/to/projects`
66
+
67
+ #### Enable GitHub integration with a Personal Access Token (NOT RECOMMENDED)
68
+ `uvx AllGitStatus --pat ghp_your_token_here`
69
+
70
+ #### The PAT can also be a path to a file containing the token (RECOMMENDED)
71
+ `uvx AllGitStatus --pat ~/.github_pat`
72
+
73
+ #### Or use an environment variable for the PAT
74
+ ```
75
+ export ALLGITSTATUS_PAT=ghp_your_token_or_filename_here
76
+ uvx AllGitStatus
77
+ ```
78
+
79
+ #### Enable debug mode for troubleshooting
80
+ `uvx AllGitStatus --debug`
81
+
82
+ #### Running as a python package
83
+
84
+ Install `AllGitStatus` as a python package using the [instructions below](#installation).
85
+
86
+ | Command Line | Scenario |
87
+ | --- | --- |
88
+ | `AllGitStatus` | To run using the current directory as the root of all git repositories. |
89
+ | `AllGitStatus <path to directory>` | To run using the specified directory as the root of all git repositories. |
90
+
91
+ <!-- Content below this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
92
+
93
+ ## Installation
94
+
95
+ Note that installation is not required when running `AllGitStatus` via `uvx`.
96
+
97
+ | Installation Method | Command |
98
+ | --- | --- |
99
+ | Via [uv](https://github.com/astral-sh/uv) | `uv add AllGitStatus` |
100
+ | Via [pip](https://pip.pypa.io/en/stable/) | `pip install AllGitStatus` |
101
+
102
+ ### Verifying Signed Artifacts
103
+ Artifacts are signed and verified using [py-minisign](https://github.com/x13a/py-minisign) and the public key in the file `./minisign_key.pub`.
104
+
105
+ To verify that an artifact is valid, visit [the latest release](https://github.com/davidbrownell/AllGitStatus/releases/latest) and download the `.minisign` signature file that corresponds to the artifact, then run the following command, replacing `<filename>` with the name of the artifact to be verified:
106
+
107
+ ```shell
108
+ uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>'); print('The file has been verified.')"
109
+ ```
110
+
111
+ ## Development
112
+ Please visit [Contributing](https://github.com/davidbrownell/AllGitStatus/blob/main/CONTRIBUTING.md) and [Development](https://github.com/davidbrownell/AllGitStatus/blob/main/DEVELOPMENT.md) for information on contributing to this project.
113
+
114
+ ## Additional Information
115
+ Additional information can be found at these locations.
116
+
117
+ | Title | Document | Description |
118
+ | --- | --- | --- |
119
+ | Code of Conduct | [CODE_OF_CONDUCT.md](https://github.com/davidbrownell/AllGitStatus/blob/main/CODE_OF_CONDUCT.md) | Information about the norms, rules, and responsibilities we adhere to when participating in this open source community. |
120
+ | Contributing | [CONTRIBUTING.md](https://github.com/davidbrownell/AllGitStatus/blob/main/CONTRIBUTING.md) | Information about contributing to this project. |
121
+ | Development | [DEVELOPMENT.md](https://github.com/davidbrownell/AllGitStatus/blob/main/DEVELOPMENT.md) | Information about development activities involved in making changes to this project. |
122
+ | Governance | [GOVERNANCE.md](https://github.com/davidbrownell/AllGitStatus/blob/main/GOVERNANCE.md) | Information about how this project is governed. |
123
+ | Maintainers | [MAINTAINERS.md](https://github.com/davidbrownell/AllGitStatus/blob/main/MAINTAINERS.md) | Information about individuals who maintain this project. |
124
+ | Security | [SECURITY.md](https://github.com/davidbrownell/AllGitStatus/blob/main/SECURITY.md) | Information about how to privately report security issues associated with this project. |
125
+
126
+ ## License
127
+ `AllGitStatus` is licensed under the <a href="https://choosealicense.com/licenses/MIT/" target="_blank">MIT</a> license.
@@ -0,0 +1,117 @@
1
+ [project]
2
+ name = "AllGitStatus"
3
+ version = "0.14.9"
4
+ # ^^^^^
5
+ # Wheel names will be generated according to this value. Do not manually modify this value; instead
6
+ # update it according to committed changes by running this command from the root of the repository:
7
+ #
8
+ # uv run python -m AutoGitSemVer.scripts.UpdatePythonVersion ./pyproject.toml ./src
9
+
10
+ description = "Checks the git status for all repositories found under the specified directory."
11
+ readme = "README.md"
12
+ authors = [
13
+ { name = "David Brownell", email = "github@davidbrownell.com" }
14
+ ]
15
+ requires-python = ">= 3.13"
16
+ dependencies = [
17
+ "aiohttp>=3.13.3",
18
+ "dbrownell-common>=0.16.0",
19
+ "textual>=5.3.0",
20
+ "typer>=0.16.1",
21
+ ]
22
+ classifiers = [
23
+ "Operating System :: MacOS",
24
+ "Operating System :: Microsoft :: Windows",
25
+ "Operating System :: POSIX :: Linux",
26
+ "Programming Language :: Python",
27
+ "Programming Language :: Python :: 3.13",
28
+ ]
29
+
30
+ [project.license]
31
+ text = "MIT"
32
+
33
+ [project.scripts]
34
+ AllGitStatus = "AllGitStatus:__main__.app"
35
+
36
+ [project.urls]
37
+ Homepage = "https://github.com/davidbrownell/AllGitStatus"
38
+ Documentation = "https://github.com/davidbrownell/AllGitStatus"
39
+ Repository = "https://github.com/davidbrownell/AllGitStatus"
40
+
41
+ [build-system]
42
+ requires = ["uv_build>=0.11.19,<0.12.0"]
43
+ build-backend = "uv_build"
44
+
45
+ [dependency-groups]
46
+ dev = [
47
+ "autogitsemver>=0.9.1",
48
+ "dbrownell-commitemojis>=0.1.4",
49
+ "pre-commit>=4.3.0",
50
+ "py-minisign>=0.12.0",
51
+ "pyfakefs>=5.9.2",
52
+ "pytest>=8.4.1",
53
+ "pytest-asyncio>=1.1.0",
54
+ "pytest-cov>=6.2.1",
55
+ "ruff>=0.12.10",
56
+ "textual-dev>=1.7.0",
57
+ "ty>=0.0.17",
58
+ ]
59
+
60
+ [tool.coverage.run]
61
+ omit = [
62
+ "src/AllGitStatus/**/Impl/**",
63
+ ]
64
+
65
+ [tool.pytest.ini_options]
66
+ addopts = "--verbose -vv --capture=no --cov=AllGitStatus --cov-report html --cov-report term --cov-report xml:coverage.xml --cov-fail-under=95.0"
67
+ asyncio_mode = "auto"
68
+
69
+ [tool.ruff]
70
+ line-length = 110
71
+
72
+ [tool.ruff.lint]
73
+ exclude = ["tests/**"]
74
+
75
+ select = ["ALL"]
76
+
77
+ ignore = [
78
+ "ANN002", # Missing type annotation for `*args`
79
+ "ANN003", # Missing type annotation for `**kwargs`
80
+ "BLE001", # Do not catch blind exception: `Exception`
81
+ "COM812", # Trailing comma missing
82
+ "D105", # Missing docstring in magic method
83
+ "D107", # Missing docstring in `__init__` method
84
+ "D202", # No blank lines allowed after function docstring
85
+ "D203", # Incorrect blank line before class docstring
86
+ "D213", # Multi line summary second line
87
+ "E501", # Line too long
88
+ "FIX002", # Line contains TODO, consider resolving the issue
89
+ "I001", # Import block is un-sorted or un-formatted
90
+ "N802", # Function name `xxx` should be lowercase
91
+ "N999", # Invalid module name
92
+ "RSE102", # Unnecessary parentheses on raise exception
93
+ "S101", # Use of assert detected
94
+ "TC006", # Add quotes to type expression in `typing.cast()`
95
+ "TD002", # Missing author in TODO
96
+ "TD003", # Missing issue link for this TODO
97
+ "TRY002", # Create your own exception
98
+ "TRY300", # Consider moving this statement to an `else` block
99
+ "UP032", # Use f-string instead of `format` call
100
+ ]
101
+
102
+ [tool.ruff.lint.mccabe]
103
+ max-complexity = 15
104
+
105
+ [tool.ruff.lint.pylint]
106
+ max-args = 10
107
+ max-branches = 20
108
+ max-returns = 20
109
+
110
+ [[tool.ty.overrides]]
111
+ include = ["tests/**"]
112
+
113
+ [tool.ty.overrides.rules]
114
+ unresolved-attribute = "ignore"
115
+
116
+ [tool.uv.build-backend]
117
+ module-name = "AllGitStatus"