python-gitea 0.7.0__tar.gz → 0.9.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.
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/codeql.yml +3 -3
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/support_floor_update.yml +1 -1
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.pre-commit-config.yaml +2 -2
- {python_gitea-0.7.0 → python_gitea-0.9.0}/PKG-INFO +82 -24
- {python_gitea-0.7.0 → python_gitea-0.9.0}/README.md +81 -23
- python_gitea-0.9.0/docs/contributing.md +1 -0
- python_gitea-0.9.0/docs/dev/architecture.md +145 -0
- python_gitea-0.9.0/docs/dev/troubleshooting.md +409 -0
- python_gitea-0.9.0/docs/gen_ref_pages.py +85 -0
- python_gitea-0.9.0/docs/index.md +1 -0
- python_gitea-0.9.0/docs/security.md +1 -0
- python_gitea-0.9.0/docs/user-guide/cli.md +519 -0
- python_gitea-0.9.0/docs/user-guide/configuration.md +125 -0
- {python_gitea-0.7.0/docs/user_guide → python_gitea-0.9.0/docs/user-guide}/installation.md +14 -37
- python_gitea-0.9.0/docs/user-guide/python-api.md +196 -0
- python_gitea-0.9.0/docs/user-guide/quickstart.md +99 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/mkdocs.yml +40 -8
- {python_gitea-0.7.0 → python_gitea-0.9.0}/pyproject.toml +3 -3
- python_gitea-0.9.0/src/gitea/cli/comment/__init__.py +1 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/comment/add.py +15 -7
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/comment/delete.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/comment/edit.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/comment/list.py +15 -7
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/config/add.py +12 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/config/delete.py +17 -2
- python_gitea-0.9.0/src/gitea/cli/config/list.py +54 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/config/update.py +13 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/create.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/dependency/add.py +32 -12
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/dependency/list.py +15 -7
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/dependency/remove.py +32 -12
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/edit.py +15 -7
- python_gitea-0.9.0/src/gitea/cli/issue/get.py +109 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/list.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/main.py +4 -0
- python_gitea-0.9.0/src/gitea/cli/label/__init__.py +1 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/label/create.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/label/delete.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/label/list.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/label/update.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/main.py +44 -1
- python_gitea-0.9.0/src/gitea/cli/milestone/__init__.py +1 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/milestone/create.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/milestone/list.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/notification/list.py +1 -1
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/notification/read.py +1 -1
- python_gitea-0.9.0/src/gitea/cli/output.py +70 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/column/create.py +6 -3
- python_gitea-0.7.0/src/gitea/cli/project/issue/add.py → python_gitea-0.9.0/src/gitea/cli/project/column/issues.py +24 -12
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/column/list.py +6 -3
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/create.py +6 -3
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/delete.py +6 -3
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/edit.py +6 -3
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/get.py +6 -3
- python_gitea-0.9.0/src/gitea/cli/project/issue/add.py +110 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/issue/move.py +38 -10
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/issue/remove.py +37 -9
- python_gitea-0.9.0/src/gitea/cli/project/issues.py +108 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/list.py +6 -3
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/main.py +4 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/pull_request/list.py +9 -4
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/user/get.py +1 -1
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/user/update_settings.py +1 -1
- python_gitea-0.9.0/src/gitea/cli/utils/api.py +96 -0
- python_gitea-0.9.0/src/gitea/cli/utils/errors.py +56 -0
- python_gitea-0.9.0/src/gitea/cli/utils/issue.py +253 -0
- python_gitea-0.9.0/src/gitea/cli/utils/options.py +110 -0
- python_gitea-0.9.0/src/gitea/cli/watch/__init__.py +1 -0
- python_gitea-0.9.0/src/gitea/cli/watch/list.py +419 -0
- python_gitea-0.9.0/src/gitea/cli/watch/main.py +21 -0
- python_gitea-0.9.0/src/gitea/issue/__init__.py +9 -0
- python_gitea-0.9.0/src/gitea/issue/project_column.py +336 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/project/async_project.py +74 -74
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/project/base.py +58 -38
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/project/project.py +74 -74
- python_gitea-0.9.0/src/gitea/utils/pagination.py +100 -0
- python_gitea-0.9.0/src/gitea/watch/__init__.py +54 -0
- python_gitea-0.9.0/src/gitea/watch/changes.py +336 -0
- python_gitea-0.9.0/src/gitea/watch/state.py +468 -0
- python_gitea-0.9.0/tests/board.py +122 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/comment/test_cli_comment_add.py +1 -1
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/comment/test_cli_comment_list.py +1 -1
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/config/test_cli_config_add.py +125 -1
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/config/test_cli_config_delete.py +106 -1
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/config/test_cli_config_list.py +63 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/config/test_cli_config_update.py +146 -1
- python_gitea-0.9.0/tests/cli/envelope.py +49 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/issue/dependency/test_cli_issue_dependency.py +5 -5
- python_gitea-0.9.0/tests/cli/issue/test_cli_issue_comment.py +55 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/issue/test_cli_issue_edit.py +1 -1
- python_gitea-0.9.0/tests/cli/issue/test_cli_issue_get.py +206 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/notification/test_cli_notification.py +89 -0
- python_gitea-0.9.0/tests/cli/project/test_cli_project.py +796 -0
- python_gitea-0.9.0/tests/cli/project/test_cli_project_column_issues.py +347 -0
- python_gitea-0.9.0/tests/cli/rendering.py +39 -0
- python_gitea-0.9.0/tests/cli/test_cli_main.py +919 -0
- python_gitea-0.9.0/tests/cli/test_cli_output.py +101 -0
- python_gitea-0.9.0/tests/cli/transport.py +105 -0
- python_gitea-0.9.0/tests/cli/utils/test_cli_utils_api.py +182 -0
- python_gitea-0.9.0/tests/cli/utils/test_cli_utils_errors.py +47 -0
- python_gitea-0.9.0/tests/cli/utils/test_cli_utils_issue.py +410 -0
- python_gitea-0.9.0/tests/cli/utils/test_cli_utils_options.py +113 -0
- python_gitea-0.9.0/tests/cli/watch/__init__.py +1 -0
- python_gitea-0.9.0/tests/cli/watch/test_cli_watch_list.py +1174 -0
- python_gitea-0.9.0/tests/issue/test_issue_async_project_column.py +231 -0
- python_gitea-0.9.0/tests/issue/test_issue_project_column.py +334 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/project/test_project_base.py +62 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/project/test_project_project.py +25 -0
- python_gitea-0.9.0/tests/utils/test_utils_pagination.py +139 -0
- python_gitea-0.9.0/tests/watch/__init__.py +1 -0
- python_gitea-0.9.0/tests/watch/test_watch_changes.py +414 -0
- python_gitea-0.9.0/tests/watch/test_watch_state.py +697 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/uv.lock +234 -164
- python_gitea-0.7.0/docs/dev/troubleshooting.md +0 -302
- python_gitea-0.7.0/docs/gen_ref_pages.py +0 -95
- python_gitea-0.7.0/docs/index.md +0 -12
- python_gitea-0.7.0/src/gitea/cli/config/list.py +0 -40
- python_gitea-0.7.0/src/gitea/cli/issue/get.py +0 -76
- python_gitea-0.7.0/src/gitea/cli/utils/api.py +0 -32
- python_gitea-0.7.0/src/gitea/issue/__init__.py +0 -8
- python_gitea-0.7.0/tests/cli/issue/test_cli_issue_get.py +0 -39
- python_gitea-0.7.0/tests/cli/project/test_cli_project.py +0 -373
- python_gitea-0.7.0/tests/cli/test_cli_main.py +0 -99
- python_gitea-0.7.0/tests/cli/utils/test_cli_utils_api.py +0 -46
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.coderabbit.yaml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/pull_request_template.md +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/ci.yml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/documentation.yml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/draft_release.yml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/publish.yml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/publish_testpypi.yml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/release.yml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/scheduled_release.yml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.github/workflows/semantic_pull_request.yml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.gitignore +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.markdownlint.yaml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.prettierrc +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.pypirc +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/.typos.toml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/CITATION.cff +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/CODE_OF_CONDUCT.md +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/CONTRIBUTING.md +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/LICENSE +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/SECURITY.md +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/SUPPORT.md +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/cliff.toml +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/docs/javascripts/mathjax.js +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/docs/style/api.css +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/renovate.json +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/scripts/release_version.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/__main__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/comment/main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/config/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/config/main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/dependency/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/issue/dependency/main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/label/main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/milestone/main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/notification/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/notification/main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/column/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/project/issue/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/pull_request/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/pull_request/main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/user/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/user/main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/utils/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/utils/auth.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/cli/utils/convert.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/client/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/client/async_gitea.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/client/base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/client/gitea.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/comment/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/comment/async_comment.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/comment/base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/comment/comment.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/config/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/config/manager.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/config/model.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/issue/async_issue.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/issue/base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/issue/issue.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/label/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/label/async_label.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/label/base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/label/label.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/milestone/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/milestone/async_milestone.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/milestone/base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/milestone/milestone.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/notification/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/notification/async_notification.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/notification/base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/notification/notification.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/project/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/pull_request/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/pull_request/async_pull_request.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/pull_request/base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/pull_request/pull_request.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/repository/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/repository/async_repository.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/repository/base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/repository/repository.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/resource/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/resource/async_resource.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/resource/resource.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/user/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/user/async_user.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/user/base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/user/user.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/utils/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/utils/log.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/utils/response.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/src/gitea/version.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/comment/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/comment/test_cli_comment_delete.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/comment/test_cli_comment_edit.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/comment/test_cli_comment_main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/config/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/config/test_cli_config_main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/issue/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/issue/dependency/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/issue/test_cli_issue_create.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/issue/test_cli_issue_list.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/issue/test_cli_issue_main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/label/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/label/test_cli_label_create.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/label/test_cli_label_delete.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/label/test_cli_label_list.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/label/test_cli_label_main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/label/test_cli_label_update.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/milestone/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/milestone/test_cli_milestone_create.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/milestone/test_cli_milestone_list.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/milestone/test_cli_milestone_main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/notification/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/project/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/pull_request/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/pull_request/test_cli_pull_request_list.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/pull_request/test_cli_pull_request_main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/user/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/user/test_cli_user_get.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/user/test_cli_user_update_settings.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/utils/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/utils/test_cli_utils_auth.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/cli/utils/test_cli_utils_convert.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/client/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/client/test_client_async_gitea.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/client/test_client_base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/client/test_client_gitea.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/comment/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/comment/test_comment_async_comment.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/comment/test_comment_base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/comment/test_comment_comment.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/config/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/config/test_config_manager.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/config/test_config_model.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/conftest.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/issue/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/issue/test_issue_async_issue.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/issue/test_issue_base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/issue/test_issue_dependencies.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/issue/test_issue_issue.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/label/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/label/test_label_async_label.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/label/test_label_base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/label/test_label_label.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/milestone/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/milestone/test_milestone_async_milestone.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/milestone/test_milestone_base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/milestone/test_milestone_milestone.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/notification/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/notification/test_notification_base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/notification/test_notification_notification.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/project/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/pull_request/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/pull_request/test_pull_request_async_pull_request.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/pull_request/test_pull_request_base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/pull_request/test_pull_request_pull_request.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/repository/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/repository/test_repository_async_repository.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/repository/test_repository_base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/repository/test_repository_repository.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/resource/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/resource/test_resource_async_resource.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/resource/test_resource_resource.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/smoke_test.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/test_import.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/test_main.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/test_release_version.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/test_version.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/user/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/user/test_user_async_user.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/user/test_user_base.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/user/test_user_user.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/utils/__init__.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/utils/test_utils_log.py +0 -0
- {python_gitea-0.7.0 → python_gitea-0.9.0}/tests/utils/test_utils_response.py +0 -0
|
@@ -22,13 +22,13 @@ jobs:
|
|
|
22
22
|
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
|
|
23
23
|
|
|
24
24
|
- name: Initialize CodeQL
|
|
25
|
-
uses: github/codeql-action/init@
|
|
25
|
+
uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4
|
|
26
26
|
with:
|
|
27
27
|
languages: python
|
|
28
28
|
queries: security-and-quality
|
|
29
29
|
|
|
30
30
|
- name: Autobuild
|
|
31
|
-
uses: github/codeql-action/autobuild@
|
|
31
|
+
uses: github/codeql-action/autobuild@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4
|
|
32
32
|
|
|
33
33
|
- name: Perform CodeQL Analysis
|
|
34
|
-
uses: github/codeql-action/analyze@
|
|
34
|
+
uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4
|
|
@@ -22,7 +22,7 @@ jobs:
|
|
|
22
22
|
|
|
23
23
|
- name: Apply support policy (spec0, from pyproject tool table)
|
|
24
24
|
id: policy
|
|
25
|
-
uses: isaac-cf-wong/dependency-support-policy-action@
|
|
25
|
+
uses: isaac-cf-wong/dependency-support-policy-action@7cce60e19b902747b4267c4f8e53820e3f3656ea # v0.2.4
|
|
26
26
|
with:
|
|
27
27
|
mode: update
|
|
28
28
|
|
|
@@ -16,7 +16,7 @@ repos:
|
|
|
16
16
|
- id: check-json
|
|
17
17
|
|
|
18
18
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
19
|
-
rev: v0.16.
|
|
19
|
+
rev: v0.16.3
|
|
20
20
|
hooks:
|
|
21
21
|
- id: ruff
|
|
22
22
|
args: [--fix, --config=pyproject.toml]
|
|
@@ -52,7 +52,7 @@ repos:
|
|
|
52
52
|
- id: actionlint
|
|
53
53
|
|
|
54
54
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
55
|
-
rev: 0.12.
|
|
55
|
+
rev: 0.12.5
|
|
56
56
|
hooks:
|
|
57
57
|
# Update the uv lockfile
|
|
58
58
|
- id: uv-lock
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: python-gitea
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.0
|
|
4
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
5
|
Project-URL: Documentation, https://isaac-cf-wong.github.io/python-gitea
|
|
6
6
|
Project-URL: Source, https://github.com/isaac-cf-wong/python-gitea
|
|
@@ -33,29 +33,71 @@ Description-Content-Type: text/markdown
|
|
|
33
33
|
[](https://codecov.io/gh/isaac-cf-wong/python-gitea)
|
|
34
34
|
[](https://pypi.org/project/python-gitea/)
|
|
35
35
|
[](https://pypi.org/project/python-gitea/)
|
|
36
|
-
[](LICENSE)
|
|
36
|
+
[](https://github.com/isaac-cf-wong/python-gitea/blob/main/LICENSE)
|
|
37
37
|
[](https://github.com/PyCQA/bandit)
|
|
38
38
|
[](https://doi.org/10.5281/zenodo.18211496)
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
simple and intuitive interface to access Gitea repositories, users,
|
|
45
|
-
organizations, issues, and more, enabling seamless integration with Gitea
|
|
46
|
-
instances for automation, data retrieval, and management tasks.
|
|
40
|
+
A Python package for interacting with the Gitea API. It provides a simple,
|
|
41
|
+
intuitive interface to access Gitea repositories, users, organizations, issues,
|
|
42
|
+
and more, enabling seamless integration with Gitea instances for automation,
|
|
43
|
+
data retrieval, and management tasks.
|
|
47
44
|
|
|
48
45
|
## Features
|
|
49
46
|
|
|
50
|
-
Full API Coverage
|
|
51
|
-
requests, and
|
|
47
|
+
- **Full API Coverage**: Repositories, users, organizations, issues, pull
|
|
48
|
+
requests, comments, labels, milestones, notifications, and projects.
|
|
49
|
+
- **Easy Authentication**: Token-based authentication, with multiple saved
|
|
50
|
+
accounts and a default-account fallback.
|
|
51
|
+
- **Asynchronous Support**: Built with `async`/`await` for non-blocking
|
|
52
|
+
operations alongside the synchronous client.
|
|
53
|
+
- **Type Hints**: Full type annotations for better IDE support and code
|
|
54
|
+
reliability.
|
|
55
|
+
- **Command-Line Interface**: Interact with the Gitea API directly from the
|
|
56
|
+
terminal for quick, scriptable operations without writing code.
|
|
57
|
+
- **Comprehensive Documentation**: Detailed guides and a generated API
|
|
58
|
+
reference.
|
|
59
|
+
|
|
60
|
+
## Quick Start
|
|
61
|
+
|
|
62
|
+
### 1. Install
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
uv venv --python 3.13
|
|
66
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
67
|
+
uv pip install python-gitea
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 2. Configure an account
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
gitea-cli config add --name my_account --token YOUR_API_TOKEN --base-url https://gitea.example.com
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 3. Use the CLI
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# List issues of a repository
|
|
80
|
+
gitea-cli issue list --owner my-org --repository my-repo
|
|
52
81
|
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
82
|
+
# Get a user
|
|
83
|
+
gitea-cli user get --username my-org
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 4. Use the Python API
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
from gitea.client.gitea import Gitea
|
|
90
|
+
|
|
91
|
+
with Gitea(token="YOUR_API_TOKEN", base_url="https://gitea.example.com") as client:
|
|
92
|
+
issues, _ = client.issue.list_issues(owner="my-org", repository="my-repo")
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
For details, see the
|
|
96
|
+
[Quick Start](https://isaac-cf-wong.github.io/python-gitea/user-guide/quickstart/),
|
|
97
|
+
[Configuration](https://isaac-cf-wong.github.io/python-gitea/user-guide/configuration/),
|
|
98
|
+
and
|
|
99
|
+
[Python API](https://isaac-cf-wong.github.io/python-gitea/user-guide/python-api/)
|
|
100
|
+
guides in the documentation.
|
|
59
101
|
|
|
60
102
|
## Installation
|
|
61
103
|
|
|
@@ -125,14 +167,10 @@ cd python-gitea
|
|
|
125
167
|
# Create a virtual environment (recommended with uv)
|
|
126
168
|
uv venv --python 3.12
|
|
127
169
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
128
|
-
uv
|
|
129
|
-
|
|
130
|
-
# Install the commitlint dependencies
|
|
131
|
-
npm install
|
|
170
|
+
uv sync --group dev
|
|
132
171
|
|
|
133
172
|
# Install pre-commit hooks
|
|
134
|
-
|
|
135
|
-
pre-commit install --hook-type commit-msg
|
|
173
|
+
uv run prek install
|
|
136
174
|
```
|
|
137
175
|
|
|
138
176
|
### Verify Installation
|
|
@@ -147,9 +185,29 @@ gitea-cli --help
|
|
|
147
185
|
python -c "import gitea; print(gitea.__version__)"
|
|
148
186
|
```
|
|
149
187
|
|
|
188
|
+
## Documentation
|
|
189
|
+
|
|
190
|
+
Full documentation is available at
|
|
191
|
+
[https://isaac-cf-wong.github.io/python-gitea](https://isaac-cf-wong.github.io/python-gitea).
|
|
192
|
+
|
|
193
|
+
## Contributing
|
|
194
|
+
|
|
195
|
+
Contributions are welcome! Please read the
|
|
196
|
+
[Contributing Guide](https://isaac-cf-wong.github.io/python-gitea/contributing/)
|
|
197
|
+
before opening a pull request.
|
|
198
|
+
|
|
199
|
+
## Testing
|
|
200
|
+
|
|
201
|
+
Run the test suite:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
uv run pytest
|
|
205
|
+
```
|
|
206
|
+
|
|
150
207
|
## License
|
|
151
208
|
|
|
152
|
-
This project is licensed under the MIT License - see the
|
|
209
|
+
This project is licensed under the MIT License - see the
|
|
210
|
+
[LICENSE](https://github.com/isaac-cf-wong/python-gitea/blob/main/LICENSE) file
|
|
153
211
|
for details.
|
|
154
212
|
|
|
155
213
|
## Support
|
|
@@ -6,29 +6,71 @@
|
|
|
6
6
|
[](https://codecov.io/gh/isaac-cf-wong/python-gitea)
|
|
7
7
|
[](https://pypi.org/project/python-gitea/)
|
|
8
8
|
[](https://pypi.org/project/python-gitea/)
|
|
9
|
-
[](LICENSE)
|
|
9
|
+
[](https://github.com/isaac-cf-wong/python-gitea/blob/main/LICENSE)
|
|
10
10
|
[](https://github.com/PyCQA/bandit)
|
|
11
11
|
[](https://doi.org/10.5281/zenodo.18211496)
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
simple and intuitive interface to access Gitea repositories, users,
|
|
18
|
-
organizations, issues, and more, enabling seamless integration with Gitea
|
|
19
|
-
instances for automation, data retrieval, and management tasks.
|
|
13
|
+
A Python package for interacting with the Gitea API. It provides a simple,
|
|
14
|
+
intuitive interface to access Gitea repositories, users, organizations, issues,
|
|
15
|
+
and more, enabling seamless integration with Gitea instances for automation,
|
|
16
|
+
data retrieval, and management tasks.
|
|
20
17
|
|
|
21
18
|
## Features
|
|
22
19
|
|
|
23
|
-
Full API Coverage
|
|
24
|
-
requests, and
|
|
20
|
+
- **Full API Coverage**: Repositories, users, organizations, issues, pull
|
|
21
|
+
requests, comments, labels, milestones, notifications, and projects.
|
|
22
|
+
- **Easy Authentication**: Token-based authentication, with multiple saved
|
|
23
|
+
accounts and a default-account fallback.
|
|
24
|
+
- **Asynchronous Support**: Built with `async`/`await` for non-blocking
|
|
25
|
+
operations alongside the synchronous client.
|
|
26
|
+
- **Type Hints**: Full type annotations for better IDE support and code
|
|
27
|
+
reliability.
|
|
28
|
+
- **Command-Line Interface**: Interact with the Gitea API directly from the
|
|
29
|
+
terminal for quick, scriptable operations without writing code.
|
|
30
|
+
- **Comprehensive Documentation**: Detailed guides and a generated API
|
|
31
|
+
reference.
|
|
32
|
+
|
|
33
|
+
## Quick Start
|
|
34
|
+
|
|
35
|
+
### 1. Install
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
uv venv --python 3.13
|
|
39
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
40
|
+
uv pip install python-gitea
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 2. Configure an account
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
gitea-cli config add --name my_account --token YOUR_API_TOKEN --base-url https://gitea.example.com
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 3. Use the CLI
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# List issues of a repository
|
|
53
|
+
gitea-cli issue list --owner my-org --repository my-repo
|
|
25
54
|
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
55
|
+
# Get a user
|
|
56
|
+
gitea-cli user get --username my-org
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 4. Use the Python API
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
from gitea.client.gitea import Gitea
|
|
63
|
+
|
|
64
|
+
with Gitea(token="YOUR_API_TOKEN", base_url="https://gitea.example.com") as client:
|
|
65
|
+
issues, _ = client.issue.list_issues(owner="my-org", repository="my-repo")
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
For details, see the
|
|
69
|
+
[Quick Start](https://isaac-cf-wong.github.io/python-gitea/user-guide/quickstart/),
|
|
70
|
+
[Configuration](https://isaac-cf-wong.github.io/python-gitea/user-guide/configuration/),
|
|
71
|
+
and
|
|
72
|
+
[Python API](https://isaac-cf-wong.github.io/python-gitea/user-guide/python-api/)
|
|
73
|
+
guides in the documentation.
|
|
32
74
|
|
|
33
75
|
## Installation
|
|
34
76
|
|
|
@@ -98,14 +140,10 @@ cd python-gitea
|
|
|
98
140
|
# Create a virtual environment (recommended with uv)
|
|
99
141
|
uv venv --python 3.12
|
|
100
142
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
101
|
-
uv
|
|
102
|
-
|
|
103
|
-
# Install the commitlint dependencies
|
|
104
|
-
npm install
|
|
143
|
+
uv sync --group dev
|
|
105
144
|
|
|
106
145
|
# Install pre-commit hooks
|
|
107
|
-
|
|
108
|
-
pre-commit install --hook-type commit-msg
|
|
146
|
+
uv run prek install
|
|
109
147
|
```
|
|
110
148
|
|
|
111
149
|
### Verify Installation
|
|
@@ -120,9 +158,29 @@ gitea-cli --help
|
|
|
120
158
|
python -c "import gitea; print(gitea.__version__)"
|
|
121
159
|
```
|
|
122
160
|
|
|
161
|
+
## Documentation
|
|
162
|
+
|
|
163
|
+
Full documentation is available at
|
|
164
|
+
[https://isaac-cf-wong.github.io/python-gitea](https://isaac-cf-wong.github.io/python-gitea).
|
|
165
|
+
|
|
166
|
+
## Contributing
|
|
167
|
+
|
|
168
|
+
Contributions are welcome! Please read the
|
|
169
|
+
[Contributing Guide](https://isaac-cf-wong.github.io/python-gitea/contributing/)
|
|
170
|
+
before opening a pull request.
|
|
171
|
+
|
|
172
|
+
## Testing
|
|
173
|
+
|
|
174
|
+
Run the test suite:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
uv run pytest
|
|
178
|
+
```
|
|
179
|
+
|
|
123
180
|
## License
|
|
124
181
|
|
|
125
|
-
This project is licensed under the MIT License - see the
|
|
182
|
+
This project is licensed under the MIT License - see the
|
|
183
|
+
[LICENSE](https://github.com/isaac-cf-wong/python-gitea/blob/main/LICENSE) file
|
|
126
184
|
for details.
|
|
127
185
|
|
|
128
186
|
## Support
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--8<-- "CONTRIBUTING.md"
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
This document describes the high-level architecture and design of
|
|
4
|
+
`python-gitea`: how the package is laid out, how the client and CLI relate, and
|
|
5
|
+
the design principles behind them.
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
`python-gitea` is a thin, typed wrapper around the
|
|
10
|
+
[Gitea REST API](https://docs.gitea.com/api/1.0). It provides two user-facing
|
|
11
|
+
surfaces that share the same domain model:
|
|
12
|
+
|
|
13
|
+
- **Python client** - synchronous (`Gitea`) and asynchronous (`AsyncGitea`)
|
|
14
|
+
clients with one resource object per Gitea domain.
|
|
15
|
+
- **CLI** - `gitea-cli`, a Typer application with one command group per domain.
|
|
16
|
+
|
|
17
|
+
Both surfaces authenticate to Gitea with a personal access token and base URL.
|
|
18
|
+
The CLI resolves configured accounts through `cli/utils/auth.py`
|
|
19
|
+
([Configuration](../user-guide/configuration.md)), while Python callers pass
|
|
20
|
+
their credentials directly to the `Gitea` or `AsyncGitea` constructor.
|
|
21
|
+
|
|
22
|
+
## Package Layout
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
src/gitea/
|
|
26
|
+
├── __init__.py # Top-level package (exports __version__)
|
|
27
|
+
├── __main__.py # python -m gitea
|
|
28
|
+
├── version.py # Version information
|
|
29
|
+
├── client/ # Client classes
|
|
30
|
+
│ ├── base.py # Client base class (token, base_url, URL building)
|
|
31
|
+
│ ├── gitea.py # Synchronous Gitea client
|
|
32
|
+
│ └── async_gitea.py # Asynchronous AsyncGitea client (aiohttp)
|
|
33
|
+
├── config/ # Configuration layer
|
|
34
|
+
│ ├── model.py # Pydantic models (AccountConfig, Config)
|
|
35
|
+
│ └── manager.py # ConfigManager (load/save/CRUD accounts)
|
|
36
|
+
├── resource/ # Resource base class
|
|
37
|
+
│ └── resource.py # Shared request helpers for resources
|
|
38
|
+
├── issue/ # Issue resource (sync + async)
|
|
39
|
+
├── pull_request/ # Pull request resource (sync + async)
|
|
40
|
+
├── repository/ # Repository resource (sync + async)
|
|
41
|
+
├── user/ # User resource (sync + async)
|
|
42
|
+
├── comment/ # Comment resource (sync + async)
|
|
43
|
+
├── label/ # Label resource (sync + async)
|
|
44
|
+
├── milestone/ # Milestone resource (sync + async)
|
|
45
|
+
├── notification/ # Notification resource (sync + async)
|
|
46
|
+
├── project/ # Project resource (sync + async)
|
|
47
|
+
├── cli/ # Typer CLI application
|
|
48
|
+
│ ├── main.py # gitea-cli entry point, command registration
|
|
49
|
+
│ ├── config/ # config commands
|
|
50
|
+
│ ├── issue/ # issue + issue dependency commands
|
|
51
|
+
│ ├── pull_request/ # pull-request commands
|
|
52
|
+
│ ├── comment/ # comment commands
|
|
53
|
+
│ ├── label/ # label commands
|
|
54
|
+
│ ├── milestone/ # milestone commands
|
|
55
|
+
│ ├── notification/ # notification commands
|
|
56
|
+
│ ├── project/ # project, column, and project-issue commands
|
|
57
|
+
│ ├── user/ # user commands
|
|
58
|
+
│ └── utils/ # auth resolution, API helpers, conversions
|
|
59
|
+
└── utils/ # Logging, pagination, and response helpers
|
|
60
|
+
├── log.py # Logger setup
|
|
61
|
+
├── pagination.py # Paginated-listing walkers
|
|
62
|
+
└── response.py # Response processing helpers
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Client Layer
|
|
66
|
+
|
|
67
|
+
The client layer is the programmatic interface. Both clients inherit from
|
|
68
|
+
`Client`, which stores the token and base URL and builds API URLs.
|
|
69
|
+
|
|
70
|
+
- `gitea.client.gitea.Gitea` uses `requests` and must be used as a context
|
|
71
|
+
manager so its HTTP session is closed.
|
|
72
|
+
- `gitea.client.async_gitea.AsyncGitea` uses `aiohttp` and must be used as an
|
|
73
|
+
async context manager.
|
|
74
|
+
|
|
75
|
+
Each client exposes one attribute per resource:
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
with Gitea(token="...", base_url="...") as client:
|
|
79
|
+
client.issue # Issue
|
|
80
|
+
client.pull_request # PullRequest
|
|
81
|
+
client.repository # Repository
|
|
82
|
+
client.user # User
|
|
83
|
+
client.comment # Comment
|
|
84
|
+
client.label # Label
|
|
85
|
+
client.milestone # Milestone
|
|
86
|
+
client.notification # Notification
|
|
87
|
+
client.project # Project
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Resource Layer
|
|
91
|
+
|
|
92
|
+
Each resource module contains a synchronous class (e.g. `gitea.issue.Issue`) and
|
|
93
|
+
an asynchronous class (e.g. `gitea.issue.AsyncIssue`) with the same method
|
|
94
|
+
names. Methods map one-to-one onto Gitea REST endpoints and return either:
|
|
95
|
+
|
|
96
|
+
- a `(data, status)` tuple for list/get operations, where `data` is the decoded
|
|
97
|
+
JSON payload and `status` carries metadata such as the HTTP status code, or
|
|
98
|
+
- the raw HTTP response for mutating operations.
|
|
99
|
+
|
|
100
|
+
Work that spans several endpoints lives beside the resource rather than inside
|
|
101
|
+
it, so the resource methods stay one-to-one with the API. For example,
|
|
102
|
+
`gitea.issue.project_column` resolves the board column an issue's card sits in,
|
|
103
|
+
which Gitea only reveals through the project's column listings.
|
|
104
|
+
|
|
105
|
+
## CLI Layer
|
|
106
|
+
|
|
107
|
+
The CLI is a single Typer application registered in `cli/main.py`. Each resource
|
|
108
|
+
has a command group (e.g. `gitea-cli issue`, `gitea-cli project`), and nested
|
|
109
|
+
groups exist where the domain nests (e.g. `project column`, `issue dependency`).
|
|
110
|
+
|
|
111
|
+
CLI commands reuse the client through thin helper functions in `cli/utils/`
|
|
112
|
+
(`auth.py` resolves authentication, `api.py` and `convert.py` handle requests
|
|
113
|
+
and option conversion), so the CLI and the Python API stay in sync with the same
|
|
114
|
+
endpoint definitions.
|
|
115
|
+
|
|
116
|
+
## Configuration Layer
|
|
117
|
+
|
|
118
|
+
The `config/` module stores named accounts in a YAML file:
|
|
119
|
+
|
|
120
|
+
- `model.py` defines the Pydantic models `AccountConfig` and `Config`.
|
|
121
|
+
- `manager.py` provides `ConfigManager` for loading, saving, and CRUD on
|
|
122
|
+
accounts, including the default-account concept.
|
|
123
|
+
|
|
124
|
+
The CLI resolves authentication through `cli/utils/auth.py`, which implements
|
|
125
|
+
the precedence rules documented in
|
|
126
|
+
[Configuration](../user-guide/configuration.md). Python callers instead pass
|
|
127
|
+
credentials directly to the client constructor; they can use `ConfigManager` to
|
|
128
|
+
load stored accounts programmatically.
|
|
129
|
+
|
|
130
|
+
## Design Principles
|
|
131
|
+
|
|
132
|
+
1. **Thin wrappers, no business logic.** The package mirrors the Gitea API
|
|
133
|
+
surface instead of abstracting it, keeping behavior predictable.
|
|
134
|
+
2. **Synchronous and asynchronous parity.** Sync and async classes expose the
|
|
135
|
+
same methods, so switching between them only changes the client and awaits.
|
|
136
|
+
3. **One source of endpoint definitions.** CLI and client share the request
|
|
137
|
+
layer, avoiding drift between the two surfaces.
|
|
138
|
+
4. **Type hints and validation everywhere.** Pydantic models for config, full
|
|
139
|
+
type annotations on all public methods, and validated option types on the
|
|
140
|
+
CLI.
|
|
141
|
+
|
|
142
|
+
## See Also
|
|
143
|
+
|
|
144
|
+
- [Contributing](../contributing.md)
|
|
145
|
+
- [API Reference](../reference/index.md)
|