python-gitea 0.3.0__py3-none-any.whl

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.
gitea/user/user.py ADDED
@@ -0,0 +1,112 @@
1
+ """Gitea User resource."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any, cast
6
+
7
+ from requests import Response
8
+
9
+ from gitea.resource.resource import Resource
10
+ from gitea.user.base import BaseUser
11
+ from gitea.utils.response import process_response
12
+
13
+
14
+ class User(BaseUser, Resource):
15
+ """Gitea User resource."""
16
+
17
+ def _get_user(self, username: str | None = None, **kwargs: Any) -> Response:
18
+ """Get user information.
19
+
20
+ Args:
21
+ username: The username of the user to retrieve. If None, retrieves the authenticated user.
22
+ **kwargs: Additional arguments for the request.
23
+
24
+ Returns:
25
+ The authenticated user's information as a Response object.
26
+
27
+ """
28
+ endpoint, kwargs = self._get_user_helper(username=username, **kwargs)
29
+ return self._get(endpoint=endpoint, **kwargs)
30
+
31
+ def get_user(self, username: str | None = None, **kwargs: Any) -> tuple[dict[str, Any], int]:
32
+ """Get user information.
33
+
34
+ Args:
35
+ username: The username of the user to retrieve. If None, retrieves the authenticated user.
36
+ **kwargs: Additional arguments for the request.
37
+
38
+ Returns:
39
+ A tuple containing the user information as a dictionary and the status code.
40
+
41
+ """
42
+ response = self._get_user(username=username, **kwargs)
43
+ data, status_code = process_response(response)
44
+ return cast(dict[str, Any], data), status_code
45
+
46
+ def _update_user_settings( # noqa: PLR0913
47
+ self,
48
+ diff_view_style: str | None = None,
49
+ full_name: str | None = None,
50
+ hide_activity: bool | None = None,
51
+ hide_email: bool | None = None,
52
+ language: str | None = None,
53
+ location: str | None = None,
54
+ theme: str | None = None,
55
+ website: str | None = None,
56
+ **kwargs: Any,
57
+ ) -> Response:
58
+ endpoint, payload, kwargs = self._update_user_settings_helper(
59
+ diff_view_style=diff_view_style,
60
+ full_name=full_name,
61
+ hide_activity=hide_activity,
62
+ hide_email=hide_email,
63
+ language=language,
64
+ location=location,
65
+ theme=theme,
66
+ website=website,
67
+ **kwargs,
68
+ )
69
+ return self._patch(endpoint=endpoint, json=payload, **kwargs)
70
+
71
+ def update_user_settings( # noqa: PLR0913
72
+ self,
73
+ diff_view_style: str | None = None,
74
+ full_name: str | None = None,
75
+ hide_activity: bool | None = None,
76
+ hide_email: bool | None = None,
77
+ language: str | None = None,
78
+ location: str | None = None,
79
+ theme: str | None = None,
80
+ website: str | None = None,
81
+ **kwargs: Any,
82
+ ) -> tuple[dict[str, Any], int]:
83
+ """Update user settings.
84
+
85
+ Args:
86
+ diff_view_style: The preferred diff view style.
87
+ full_name: The full name of the user.
88
+ hide_activity: Whether to hide the user's activity.
89
+ hide_email: Whether to hide the user's email.
90
+ language: The preferred language.
91
+ location: The location of the user.
92
+ theme: The preferred theme.
93
+ website: The user's website.
94
+ **kwargs: Additional arguments for the request.
95
+
96
+ Returns:
97
+ A tuple containing the updated user settings as a dictionary and the status code.
98
+
99
+ """
100
+ response = self._update_user_settings(
101
+ diff_view_style=diff_view_style,
102
+ full_name=full_name,
103
+ hide_activity=hide_activity,
104
+ hide_email=hide_email,
105
+ language=language,
106
+ location=location,
107
+ theme=theme,
108
+ website=website,
109
+ **kwargs,
110
+ )
111
+ data, status_code = process_response(response)
112
+ return cast(dict[str, Any], data), status_code
@@ -0,0 +1,7 @@
1
+ """Utility functions for the python-gitea package."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from gitea.utils.log import get_version_information, setup_logger
6
+
7
+ __all__ = ["get_version_information", "setup_logger"]
gitea/utils/log.py ADDED
@@ -0,0 +1,70 @@
1
+ """Utility functions for logging."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import logging
6
+ from pathlib import Path
7
+
8
+ from gitea.version import __version__
9
+
10
+
11
+ def get_version_information() -> str:
12
+ """Get the version information.
13
+
14
+ Returns:
15
+ str: Version information.
16
+
17
+ """
18
+ return __version__
19
+
20
+
21
+ def setup_logger(
22
+ outdir: str = ".", label: str | None = None, log_level: str | int = "INFO", print_version: bool = False
23
+ ) -> None:
24
+ """Set up logging output: call at the start of the script to use.
25
+
26
+ Args:
27
+ outdir: Output directory for log file.
28
+ label: Label for log file name. If None, no log file is created.
29
+ log_level: Logging level as string or integer.
30
+ print_version: Whether to print version information to the log.
31
+
32
+ """
33
+ if isinstance(log_level, str):
34
+ try:
35
+ level = getattr(logging, log_level.upper())
36
+ except AttributeError as e:
37
+ raise ValueError(f"log_level {log_level} not understood") from e
38
+ else:
39
+ level = int(log_level)
40
+
41
+ logger = logging.getLogger("python-gitea")
42
+ logger.propagate = False
43
+ logger.setLevel(level)
44
+
45
+ if not any(
46
+ isinstance(h, logging.StreamHandler) and not isinstance(h, logging.FileHandler) for h in logger.handlers
47
+ ):
48
+ stream_handler = logging.StreamHandler()
49
+ stream_handler.setFormatter(
50
+ logging.Formatter("%(asctime)s %(name)s %(levelname)-8s: %(message)s", datefmt="%H:%M")
51
+ )
52
+ stream_handler.setLevel(level)
53
+ logger.addHandler(stream_handler)
54
+
55
+ if not any(isinstance(h, logging.FileHandler) for h in logger.handlers) and label:
56
+ outdir_path = Path(outdir)
57
+ outdir_path.mkdir(parents=True, exist_ok=True)
58
+ log_file = outdir_path / f"{label}.log"
59
+ file_handler = logging.FileHandler(log_file)
60
+ file_handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)-8s: %(message)s", datefmt="%H:%M"))
61
+
62
+ file_handler.setLevel(level)
63
+ logger.addHandler(file_handler)
64
+
65
+ for handler in logger.handlers:
66
+ handler.setLevel(level)
67
+
68
+ if print_version:
69
+ version = get_version_information()
70
+ logger.info("Running python-gitea version: %s", version)
@@ -0,0 +1,59 @@
1
+ """Utility functions for processing HTTP responses."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import logging
6
+ from typing import Any
7
+
8
+ from aiohttp import ClientResponse
9
+ from requests import Response
10
+
11
+ logger = logging.getLogger("gitea")
12
+
13
+
14
+ def process_response(response: Response) -> tuple[dict[str, Any] | list[dict[str, Any]], int]:
15
+ """Process a synchronous HTTP response.
16
+
17
+ Args:
18
+ response: The HTTP response object.
19
+
20
+ Returns:
21
+ A tuple containing the response data and status code.
22
+
23
+ """
24
+ status_code = response.status_code
25
+ if status_code == 204: # noqa: PLR2004
26
+ data = {}
27
+ elif 200 <= status_code < 300: # noqa: PLR2004
28
+ try:
29
+ data = response.json()
30
+ except ValueError as e:
31
+ logger.error("Failed to parse JSON response: %s", e)
32
+ data = {}
33
+ else:
34
+ data = {}
35
+ return data, status_code
36
+
37
+
38
+ async def process_async_response(response: ClientResponse) -> tuple[dict[str, Any] | list[dict[str, Any]], int]:
39
+ """Process an asynchronous HTTP response.
40
+
41
+ Args:
42
+ response: The asynchronous HTTP response object.
43
+
44
+ Returns:
45
+ A tuple containing the response data and status code.
46
+
47
+ """
48
+ status_code = response.status
49
+ if status_code == 204: # noqa: PLR2004
50
+ data = {}
51
+ elif 200 <= status_code < 300: # noqa: PLR2004
52
+ try:
53
+ data = await response.json()
54
+ except ValueError as e:
55
+ logger.error("Failed to parse JSON response: %s", e)
56
+ data = {}
57
+ else:
58
+ data = {}
59
+ return data, status_code
gitea/version.py ADDED
@@ -0,0 +1,11 @@
1
+ """A script to infer the version number from the metadata."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from importlib.metadata import PackageNotFoundError, version
6
+
7
+ try:
8
+ __version__ = version("python-gitea")
9
+ except PackageNotFoundError:
10
+ # Fallback for source checkouts or environments without installed metadata.
11
+ __version__ = "0+unknown"
@@ -0,0 +1,185 @@
1
+ Metadata-Version: 2.4
2
+ Name: python-gitea
3
+ Version: 0.3.0
4
+ Summary: A Python package for interacting with the Gitea API, offering a simple interface to access repositories, users, organizations, issues, and more for automation and data management.
5
+ Project-URL: Documentation, https://isaac-cf-wong.github.io/python-gitea
6
+ Project-URL: Source, https://github.com/isaac-cf-wong/python-gitea
7
+ Project-URL: Tracker, https://github.com/isaac-cf-wong/python-gitea/issues
8
+ Project-URL: Home, https://github.com/isaac-cf-wong/python-gitea
9
+ Project-URL: Release Notes, https://github.com/isaac-cf-wong/python-gitea/releases
10
+ Author-email: "Isaac C. F. Wong" <isaac.cf.wong@gmail.com>
11
+ License-File: LICENSE
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Requires-Python: >=3.10
20
+ Requires-Dist: aiohttp<4.0.0,>=3.8.0
21
+ Requires-Dist: requests<3.0.0,>=2.32.0
22
+ Requires-Dist: typer<1.0.0,>=0.21.0
23
+ Provides-Extra: dev
24
+ Requires-Dist: black; extra == 'dev'
25
+ Requires-Dist: flake8; extra == 'dev'
26
+ Requires-Dist: pre-commit; extra == 'dev'
27
+ Requires-Dist: pytest; extra == 'dev'
28
+ Provides-Extra: docs
29
+ Requires-Dist: mike; extra == 'docs'
30
+ Requires-Dist: mkdocs; extra == 'docs'
31
+ Requires-Dist: mkdocs-gen-files; extra == 'docs'
32
+ Requires-Dist: mkdocs-literate-nav; extra == 'docs'
33
+ Requires-Dist: mkdocs-material; extra == 'docs'
34
+ Requires-Dist: mkdocs-section-index; extra == 'docs'
35
+ Requires-Dist: mkdocstrings[python]; extra == 'docs'
36
+ Provides-Extra: test
37
+ Requires-Dist: bandit[toml]==1.9.3; extra == 'test'
38
+ Requires-Dist: black==26.1.0; extra == 'test'
39
+ Requires-Dist: check-manifest==0.51; extra == 'test'
40
+ Requires-Dist: flake8; extra == 'test'
41
+ Requires-Dist: flake8-bugbear==25.11.29; extra == 'test'
42
+ Requires-Dist: flake8-docstrings; extra == 'test'
43
+ Requires-Dist: flake8-formatter-junit-xml; extra == 'test'
44
+ Requires-Dist: flake8-pyproject; extra == 'test'
45
+ Requires-Dist: pre-commit==4.5.1; extra == 'test'
46
+ Requires-Dist: pytest-asyncio; extra == 'test'
47
+ Requires-Dist: pytest-cov==7.0.0; extra == 'test'
48
+ Requires-Dist: pytest-github-actions-annotate-failures; extra == 'test'
49
+ Requires-Dist: pytest-mock<3.15.2; extra == 'test'
50
+ Requires-Dist: pytest-runner; extra == 'test'
51
+ Requires-Dist: pytest==9.0.2; extra == 'test'
52
+ Requires-Dist: shellcheck-py==0.11.0.1; extra == 'test'
53
+ Description-Content-Type: text/markdown
54
+
55
+ # python-gitea
56
+
57
+ [![Python CI](https://github.com/isaac-cf-wong/python-gitea/actions/workflows/CI.yml/badge.svg)](https://github.com/isaac-cf-wong/python-gitea/actions/workflows/CI.yml)
58
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/isaac-cf-wong/python-gitea/main.svg)](https://results.pre-commit.ci/latest/github/isaac-cf-wong/python-gitea/main)
59
+ [![Documentation Status](https://github.com/isaac-cf-wong/python-gitea/actions/workflows/documentation.yml/badge.svg)](https://isaac-cf-wong.github.io/python-gitea/)
60
+ [![codecov](https://codecov.io/gh/isaac-cf-wong/python-gitea/graph/badge.svg?token=COF8341N60)](https://codecov.io/gh/isaac-cf-wong/python-gitea)
61
+ [![PyPI Version](https://img.shields.io/pypi/v/python-gitea)](https://pypi.org/project/python-gitea/)
62
+ [![Python Versions](https://img.shields.io/pypi/pyversions/python-gitea)](https://pypi.org/project/python-gitea/)
63
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
64
+ [![Security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
65
+ [![DOI](https://zenodo.org/badge/1129170965.svg)](https://doi.org/10.5281/zenodo.18211496)
66
+
67
+ **Note:** This project is still in progress. The promised features are not fully ready yet, and APIs are subject to change.
68
+
69
+ A Python package for interacting with the Gitea API.
70
+ This package provides a simple and intuitive interface to access Gitea repositories, users, organizations, issues, and more,
71
+ enabling seamless integration with Gitea instances for automation, data retrieval, and management tasks.
72
+
73
+ ## Features
74
+
75
+ Full API Coverage: Access to repositories, users, organizations, issues, pull requests, and more.
76
+
77
+ - Easy Authentication: Support for token-based authentication.
78
+ - Asynchronous Support: Built with async/await for non-blocking operations.
79
+ - Type Hints: Full type annotations for better IDE support and code reliability.
80
+ - Comprehensive Documentation: Detailed guides and API reference.
81
+ - Command-Line Interface: Interact with the Gitea API directly from the terminal for
82
+ quick, scriptable operations without writing code.
83
+
84
+ ## Installation
85
+
86
+ We recommend using `uv` to manage virtual environments for installing `python-gitea`.
87
+
88
+ If you don't have `uv` installed, you can install it with pip. See the project pages for more details:
89
+
90
+ - Install via pip: `pip install --upgrade pip && pip install uv`
91
+ - Project pages: [uv on PyPI](https://pypi.org/project/uv/) | [uv on GitHub](https://github.com/astral-sh/uv)
92
+ - Full documentation and usage guide: [uv docs](https://docs.astral.sh/uv/)
93
+
94
+ ### Requirements
95
+
96
+ - Python 3.10 or higher
97
+ - Operating System: Linux, macOS, or Windows
98
+
99
+ ### Install from PyPI
100
+
101
+ The recommended way to install `python-gitea` is from PyPI:
102
+
103
+ ```bash
104
+ # Create a virtual environment (recommended with uv)
105
+ uv venv --python 3.10
106
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
107
+ uv pip install python-gitea
108
+ ```
109
+
110
+ #### Optional Dependencies
111
+
112
+ For development or specific features:
113
+
114
+ ```bash
115
+ # Development dependencies (testing, linting, etc.)
116
+ uv pip install python-gitea[dev]
117
+
118
+ # Documentation dependencies
119
+ uv pip install python-gitea[docs]
120
+
121
+ # All dependencies
122
+ uv pip install python-gitea[dev,docs]
123
+ ```
124
+
125
+ ### Install from Source
126
+
127
+ For the latest development version:
128
+
129
+ ```bash
130
+ git clone git@github.com:isaac-cf-wong/python-gitea.git
131
+ cd python-gitea
132
+ # Create a virtual environment (recommended with uv)
133
+ uv venv --python 3.10
134
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
135
+ uv pip install .
136
+ ```
137
+
138
+ #### Development Installation
139
+
140
+ To set up for development:
141
+
142
+ ```bash
143
+ git clone git@github.com:isaac-cf-wong/python-gitea.git
144
+ cd python-gitea
145
+
146
+ # Create a virtual environment (recommended with uv)
147
+ uv venv --python 3.10
148
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
149
+ uv pip install ".[dev]"
150
+
151
+ # Install the commitlint dependencies
152
+ npm install
153
+
154
+ # Install pre-commit hooks
155
+ pre-commit install
156
+ pre-commit install --hook-type commit-msg
157
+ ```
158
+
159
+ ### Verify Installation
160
+
161
+ Check that `python-gitea` is installed correctly:
162
+
163
+ ```bash
164
+ gitea-cli --help
165
+ ```
166
+
167
+ ```bash
168
+ python -c "import gitea; print(gitea.__version__)"
169
+ ```
170
+
171
+ ## License
172
+
173
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
174
+
175
+ ## Support
176
+
177
+ For questions, issues, or contributions, please:
178
+
179
+ - Check the [documentation](https://isaac-cf-wong.github.io/python-gitea/)
180
+ - Open an issue on [GitHub](https://github.com/isaac-cf-wong/python-gitea/issues)
181
+ - Join our [discussions](https://github.com/isaac-cf-wong/python-gitea/discussions)
182
+
183
+ ## Changelog
184
+
185
+ See [Release Notes](https://github.com/isaac-cf-wong/python-gitea/releases) for version history.
@@ -0,0 +1,37 @@
1
+ gitea/__init__.py,sha256=88oOBMq7_jb4Lj_50Rnm7sLGgwVVf2F4CtrXa8wHtGo,144
2
+ gitea/__main__.py,sha256=VxrPtOzhGWtiYFtbMf9HZfBOq69f1-6wiZKUgChCi9k,200
3
+ gitea/version.py,sha256=9VocG55BuA7PWHyEMjaq6vqnsLFfT4wQ5I0zSrianLg,347
4
+ gitea/cli/__init__.py,sha256=a7N3aSLhu10Tqeg6AbQWQMiTLiBhLa7kKFiNtXJ33dY,40
5
+ gitea/cli/main.py,sha256=Hdtja67e4Gx4kntA2UT1wn9TWMsv8kUenwwGOTEMHfY,3317
6
+ gitea/cli/utils.py,sha256=hSg2NsBXkdkYbX9A8wDCrF40DOAt5AH8vYHGopNTygg,1252
7
+ gitea/cli/user/__init__.py,sha256=vy_rPJPeapNmXT0_X6p3ljlmEJcBOlTok4r1kq7N8mA,36
8
+ gitea/cli/user/delete_user_level_runner.py,sha256=xqZRz8Ux7ga0YSAb5D8mNn0pkWc7HA5y8RPjqMb1-xU,1207
9
+ gitea/cli/user/get_registration_token.py,sha256=BYwAfYitaQ7xOfbbena5i272geIH5dNYFsNRwosxiSQ,936
10
+ gitea/cli/user/get_user.py,sha256=KwUubEypRMNq5PZyvNwmBbYVu3-7VKHdwmrocTi4Bko,1190
11
+ gitea/cli/user/get_user_level_runners.py,sha256=HDWnvUZYzdzwVdM1rtMzB7bZuvhjV3GgNLkdKlluTSw,1103
12
+ gitea/cli/user/get_workflow_jobs.py,sha256=Yp3Svvjaf_LaxalJaTTQ7ag5aJv0ltZtnFuMFWo10dU,1821
13
+ gitea/cli/user/get_workflow_runs.py,sha256=OAzAae-EytAd1q6YldM_njj77zsx91WrrTZ1ABL8qXE,2557
14
+ gitea/cli/user/main.py,sha256=Q1SzPwlHcmjK99FvRlPx94uYWe2honp5q9f_nPR79y8,1250
15
+ gitea/client/__init__.py,sha256=tWyILBf_tdTP1F6tf0NrNtgeEOYDRkc2QlHaga7GIo8,185
16
+ gitea/client/async_gitea.py,sha256=3JNb30PmnVFLsJf6PFBLlkzkxNPXlGYI-Z5g54scj0k,3459
17
+ gitea/client/base.py,sha256=4COF3_TBfSb9X8Zj3vDdBYlmtKyd6WkjpaD6wIu020A,1138
18
+ gitea/client/gitea.py,sha256=WFt2Ewm0jZcJkxRG4-UfeEO3Me9eWuVjjNCZ4cqZSSY,2768
19
+ gitea/issue/__init__.py,sha256=0n6hG36CA9hiiEQ8DC2gqacfI7sw26YojVp61GnrL60,183
20
+ gitea/issue/async_issue.py,sha256=bd-6N_Njk564NdFGv6Xa94B_QbbG4thEnxmvYsR0RL8,10027
21
+ gitea/issue/base.py,sha256=3UCCh_HfPCqCtgL0i2LnXQ8HqbI97WORDXQMdUH7D-Y,7192
22
+ gitea/issue/issue.py,sha256=vBQpIxW7lnQY18FFXqjLD2LYtNwJqYJJSFxDFtgGl4Y,9843
23
+ gitea/resource/__init__.py,sha256=JIn9d6nLh9RyFAugFFhgKiKTBO2IR8bWtLBVT46aYGM,37
24
+ gitea/resource/async_resource.py,sha256=nDiUmZJpX9TqzfLmq869gDHrrHy7OWJbVrHKG7oVEB8,2506
25
+ gitea/resource/resource.py,sha256=0za0iWeag1SK9NNdTFKRNOw6b02zbIlAYDzA587l7qQ,2269
26
+ gitea/user/__init__.py,sha256=Oj9f6kSZtFMuRlTaP_SeP0Jkz3lSP542Wjhu86AD04k,33
27
+ gitea/user/async_user.py,sha256=qWN5ByMwRklM7UUblen-DqFhM0MXkoBFLEQX5BGHPYc,4630
28
+ gitea/user/base.py,sha256=wNOfgHNyYZc68XIuCsXmorMC3ce_AOpLRD1KKr5k-_8,3859
29
+ gitea/user/user.py,sha256=2NddcqaRPj0j95mc36KwW2UFxxlU6cwAKJGSJDrtYZo,3839
30
+ gitea/utils/__init__.py,sha256=aP0FsAkvhZAoKrlaEWWvx_F7KU0HPqWhKElyBdEyTyk,212
31
+ gitea/utils/log.py,sha256=U_MfLFsUneCjomZegUlXuQe6O0CUpq1_-5o6sfv6iLQ,2233
32
+ gitea/utils/response.py,sha256=yqMMOmBzJ8dF4-TWOStS5OymbzC6VkTcR_oQSyJS42I,1583
33
+ python_gitea-0.3.0.dist-info/METADATA,sha256=kUe5axX6kdTOHWl2L8K486sYUGAAHSEWlP6soxcSlaQ,7251
34
+ python_gitea-0.3.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
35
+ python_gitea-0.3.0.dist-info/entry_points.txt,sha256=m5yt-1RMRZRFMj_M-Un5E4eOkM113S9EppAHp0aCzEY,49
36
+ python_gitea-0.3.0.dist-info/licenses/LICENSE,sha256=4dW9zcCxiQKAu4CyNKJTRmvzdJCCHDxbPGuQ-YALpsY,1137
37
+ python_gitea-0.3.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ gitea-cli = gitea.cli.main:app
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 isaac-cf-wong
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