python-gitea 0.10.0__tar.gz → 0.10.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 (328) hide show
  1. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/support_floor_update.yml +1 -1
  2. {python_gitea-0.10.0 → python_gitea-0.10.1}/.pre-commit-config.yaml +1 -1
  3. {python_gitea-0.10.0 → python_gitea-0.10.1}/PKG-INFO +1 -1
  4. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/user-guide/cli.md +46 -6
  5. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/user-guide/python-api.md +32 -0
  6. {python_gitea-0.10.0 → python_gitea-0.10.1}/pyproject.toml +1 -1
  7. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/issue/add.py +6 -0
  8. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/issue/move.py +23 -12
  9. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/main.py +12 -2
  10. python_gitea-0.10.1/src/gitea/cli/utils/issue.py +878 -0
  11. python_gitea-0.10.1/src/gitea/issue/__init__.py +25 -0
  12. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/issue/project_column.py +109 -26
  13. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/project/test_cli_project.py +690 -4
  14. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/test_cli_contract.py +3 -0
  15. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/test_cli_main.py +64 -0
  16. {python_gitea-0.10.0 → python_gitea-0.10.1}/uv.lock +19 -19
  17. python_gitea-0.10.0/src/gitea/cli/utils/issue.py +0 -253
  18. python_gitea-0.10.0/src/gitea/issue/__init__.py +0 -9
  19. {python_gitea-0.10.0 → python_gitea-0.10.1}/.coderabbit.yaml +0 -0
  20. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  21. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  22. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  23. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/pull_request_template.md +0 -0
  24. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/ci.yml +0 -0
  25. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/codeql.yml +0 -0
  26. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/documentation.yml +0 -0
  27. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/draft_release.yml +0 -0
  28. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/publish.yml +0 -0
  29. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/publish_testpypi.yml +0 -0
  30. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/release.yml +0 -0
  31. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/scheduled_release.yml +0 -0
  32. {python_gitea-0.10.0 → python_gitea-0.10.1}/.github/workflows/semantic_pull_request.yml +0 -0
  33. {python_gitea-0.10.0 → python_gitea-0.10.1}/.gitignore +0 -0
  34. {python_gitea-0.10.0 → python_gitea-0.10.1}/.markdownlint.yaml +0 -0
  35. {python_gitea-0.10.0 → python_gitea-0.10.1}/.prettierrc +0 -0
  36. {python_gitea-0.10.0 → python_gitea-0.10.1}/.pypirc +0 -0
  37. {python_gitea-0.10.0 → python_gitea-0.10.1}/.typos.toml +0 -0
  38. {python_gitea-0.10.0 → python_gitea-0.10.1}/CITATION.cff +0 -0
  39. {python_gitea-0.10.0 → python_gitea-0.10.1}/CODE_OF_CONDUCT.md +0 -0
  40. {python_gitea-0.10.0 → python_gitea-0.10.1}/CONTRIBUTING.md +0 -0
  41. {python_gitea-0.10.0 → python_gitea-0.10.1}/LICENSE +0 -0
  42. {python_gitea-0.10.0 → python_gitea-0.10.1}/README.md +0 -0
  43. {python_gitea-0.10.0 → python_gitea-0.10.1}/SECURITY.md +0 -0
  44. {python_gitea-0.10.0 → python_gitea-0.10.1}/SUPPORT.md +0 -0
  45. {python_gitea-0.10.0 → python_gitea-0.10.1}/cliff.toml +0 -0
  46. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/contributing.md +0 -0
  47. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/dev/architecture.md +0 -0
  48. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/dev/troubleshooting.md +0 -0
  49. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/gen_ref_pages.py +0 -0
  50. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/index.md +0 -0
  51. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/javascripts/mathjax.js +0 -0
  52. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/security.md +0 -0
  53. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/style/api.css +0 -0
  54. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/user-guide/configuration.md +0 -0
  55. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/user-guide/installation.md +0 -0
  56. {python_gitea-0.10.0 → python_gitea-0.10.1}/docs/user-guide/quickstart.md +0 -0
  57. {python_gitea-0.10.0 → python_gitea-0.10.1}/mkdocs.yml +0 -0
  58. {python_gitea-0.10.0 → python_gitea-0.10.1}/renovate.json +0 -0
  59. {python_gitea-0.10.0 → python_gitea-0.10.1}/scripts/release_version.py +0 -0
  60. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/__init__.py +0 -0
  61. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/__main__.py +0 -0
  62. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/__init__.py +0 -0
  63. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/comment/__init__.py +0 -0
  64. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/comment/add.py +0 -0
  65. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/comment/delete.py +0 -0
  66. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/comment/edit.py +0 -0
  67. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/comment/list.py +0 -0
  68. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/comment/main.py +0 -0
  69. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/config/__init__.py +0 -0
  70. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/config/add.py +0 -0
  71. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/config/delete.py +0 -0
  72. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/config/list.py +0 -0
  73. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/config/main.py +0 -0
  74. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/config/update.py +0 -0
  75. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/__init__.py +0 -0
  76. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/close.py +0 -0
  77. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/create.py +0 -0
  78. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/dependency/__init__.py +0 -0
  79. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/dependency/add.py +0 -0
  80. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/dependency/list.py +0 -0
  81. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/dependency/main.py +0 -0
  82. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/dependency/remove.py +0 -0
  83. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/edit.py +0 -0
  84. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/get.py +0 -0
  85. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/list.py +0 -0
  86. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/issue/main.py +0 -0
  87. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/label/__init__.py +0 -0
  88. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/label/create.py +0 -0
  89. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/label/delete.py +0 -0
  90. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/label/list.py +0 -0
  91. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/label/main.py +0 -0
  92. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/label/update.py +0 -0
  93. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/main.py +0 -0
  94. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/milestone/__init__.py +0 -0
  95. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/milestone/create.py +0 -0
  96. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/milestone/list.py +0 -0
  97. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/milestone/main.py +0 -0
  98. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/notification/__init__.py +0 -0
  99. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/notification/list.py +0 -0
  100. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/notification/main.py +0 -0
  101. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/notification/read.py +0 -0
  102. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/organization/__init__.py +0 -0
  103. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/organization/list.py +0 -0
  104. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/organization/main.py +0 -0
  105. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/output.py +0 -0
  106. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/__init__.py +0 -0
  107. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/column/__init__.py +0 -0
  108. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/column/create.py +0 -0
  109. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/column/issues.py +0 -0
  110. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/column/list.py +0 -0
  111. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/create.py +0 -0
  112. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/delete.py +0 -0
  113. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/edit.py +0 -0
  114. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/get.py +0 -0
  115. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/issue/__init__.py +0 -0
  116. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/issue/remove.py +0 -0
  117. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/issues.py +0 -0
  118. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/list.py +0 -0
  119. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/project/show.py +0 -0
  120. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/pull_request/__init__.py +0 -0
  121. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/pull_request/list.py +0 -0
  122. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/pull_request/main.py +0 -0
  123. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/repository/__init__.py +0 -0
  124. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/repository/list.py +0 -0
  125. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/repository/main.py +0 -0
  126. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/user/__init__.py +0 -0
  127. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/user/get.py +0 -0
  128. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/user/main.py +0 -0
  129. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/user/update_settings.py +0 -0
  130. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/utils/__init__.py +0 -0
  131. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/utils/api.py +0 -0
  132. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/utils/auth.py +0 -0
  133. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/utils/convert.py +0 -0
  134. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/utils/errors.py +0 -0
  135. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/utils/options.py +0 -0
  136. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/watch/__init__.py +0 -0
  137. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/watch/list.py +0 -0
  138. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/cli/watch/main.py +0 -0
  139. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/client/__init__.py +0 -0
  140. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/client/async_gitea.py +0 -0
  141. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/client/base.py +0 -0
  142. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/client/gitea.py +0 -0
  143. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/comment/__init__.py +0 -0
  144. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/comment/async_comment.py +0 -0
  145. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/comment/base.py +0 -0
  146. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/comment/comment.py +0 -0
  147. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/config/__init__.py +0 -0
  148. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/config/manager.py +0 -0
  149. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/config/model.py +0 -0
  150. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/issue/async_issue.py +0 -0
  151. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/issue/base.py +0 -0
  152. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/issue/issue.py +0 -0
  153. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/label/__init__.py +0 -0
  154. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/label/async_label.py +0 -0
  155. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/label/base.py +0 -0
  156. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/label/label.py +0 -0
  157. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/milestone/__init__.py +0 -0
  158. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/milestone/async_milestone.py +0 -0
  159. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/milestone/base.py +0 -0
  160. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/milestone/milestone.py +0 -0
  161. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/notification/__init__.py +0 -0
  162. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/notification/async_notification.py +0 -0
  163. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/notification/base.py +0 -0
  164. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/notification/notification.py +0 -0
  165. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/organization/__init__.py +0 -0
  166. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/organization/async_organization.py +0 -0
  167. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/organization/base.py +0 -0
  168. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/organization/organization.py +0 -0
  169. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/project/__init__.py +0 -0
  170. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/project/async_project.py +0 -0
  171. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/project/base.py +0 -0
  172. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/project/project.py +0 -0
  173. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/pull_request/__init__.py +0 -0
  174. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/pull_request/async_pull_request.py +0 -0
  175. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/pull_request/base.py +0 -0
  176. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/pull_request/pull_request.py +0 -0
  177. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/repository/__init__.py +0 -0
  178. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/repository/async_repository.py +0 -0
  179. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/repository/base.py +0 -0
  180. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/repository/repository.py +0 -0
  181. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/resource/__init__.py +0 -0
  182. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/resource/async_resource.py +0 -0
  183. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/resource/resource.py +0 -0
  184. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/user/__init__.py +0 -0
  185. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/user/async_user.py +0 -0
  186. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/user/base.py +0 -0
  187. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/user/user.py +0 -0
  188. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/utils/__init__.py +0 -0
  189. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/utils/fields.py +0 -0
  190. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/utils/log.py +0 -0
  191. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/utils/pagination.py +0 -0
  192. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/utils/response.py +0 -0
  193. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/version.py +0 -0
  194. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/watch/__init__.py +0 -0
  195. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/watch/changes.py +0 -0
  196. {python_gitea-0.10.0 → python_gitea-0.10.1}/src/gitea/watch/state.py +0 -0
  197. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/__init__.py +0 -0
  198. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/board.py +0 -0
  199. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/__init__.py +0 -0
  200. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/comment/__init__.py +0 -0
  201. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/comment/test_cli_comment_add.py +0 -0
  202. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/comment/test_cli_comment_delete.py +0 -0
  203. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/comment/test_cli_comment_edit.py +0 -0
  204. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/comment/test_cli_comment_list.py +0 -0
  205. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/comment/test_cli_comment_main.py +0 -0
  206. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/config/__init__.py +0 -0
  207. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/config/test_cli_config_add.py +0 -0
  208. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/config/test_cli_config_delete.py +0 -0
  209. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/config/test_cli_config_list.py +0 -0
  210. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/config/test_cli_config_main.py +0 -0
  211. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/config/test_cli_config_update.py +0 -0
  212. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/envelope.py +0 -0
  213. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/__init__.py +0 -0
  214. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/dependency/__init__.py +0 -0
  215. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/dependency/test_cli_issue_dependency.py +0 -0
  216. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/test_cli_issue_close.py +0 -0
  217. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/test_cli_issue_comment.py +0 -0
  218. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/test_cli_issue_create.py +0 -0
  219. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/test_cli_issue_edit.py +0 -0
  220. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/test_cli_issue_get.py +0 -0
  221. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/test_cli_issue_list.py +0 -0
  222. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/issue/test_cli_issue_main.py +0 -0
  223. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/label/__init__.py +0 -0
  224. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/label/test_cli_label_create.py +0 -0
  225. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/label/test_cli_label_delete.py +0 -0
  226. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/label/test_cli_label_list.py +0 -0
  227. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/label/test_cli_label_main.py +0 -0
  228. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/label/test_cli_label_update.py +0 -0
  229. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/milestone/__init__.py +0 -0
  230. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/milestone/test_cli_milestone_create.py +0 -0
  231. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/milestone/test_cli_milestone_list.py +0 -0
  232. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/milestone/test_cli_milestone_main.py +0 -0
  233. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/notification/__init__.py +0 -0
  234. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/notification/test_cli_notification.py +0 -0
  235. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/organization/__init__.py +0 -0
  236. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/organization/test_cli_organization_list.py +0 -0
  237. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/organization/test_cli_organization_main.py +0 -0
  238. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/project/__init__.py +0 -0
  239. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/project/test_cli_project_column_issues.py +0 -0
  240. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/project/test_cli_project_show.py +0 -0
  241. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/pull_request/__init__.py +0 -0
  242. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/pull_request/test_cli_pull_request_list.py +0 -0
  243. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/pull_request/test_cli_pull_request_main.py +0 -0
  244. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/rendering.py +0 -0
  245. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/repository/__init__.py +0 -0
  246. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/repository/test_cli_repository_list.py +0 -0
  247. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/repository/test_cli_repository_main.py +0 -0
  248. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/test_cli_output.py +0 -0
  249. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/tree.py +0 -0
  250. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/user/__init__.py +0 -0
  251. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/user/test_cli_user_get.py +0 -0
  252. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/user/test_cli_user_update_settings.py +0 -0
  253. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/utils/__init__.py +0 -0
  254. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/utils/test_cli_utils_api.py +0 -0
  255. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/utils/test_cli_utils_auth.py +0 -0
  256. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/utils/test_cli_utils_convert.py +0 -0
  257. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/utils/test_cli_utils_errors.py +0 -0
  258. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/utils/test_cli_utils_issue.py +0 -0
  259. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/utils/test_cli_utils_options.py +0 -0
  260. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/watch/__init__.py +0 -0
  261. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/cli/watch/test_cli_watch_list.py +0 -0
  262. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/client/__init__.py +0 -0
  263. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/client/test_client_async_gitea.py +0 -0
  264. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/client/test_client_base.py +0 -0
  265. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/client/test_client_gitea.py +0 -0
  266. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/comment/__init__.py +0 -0
  267. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/comment/test_comment_async_comment.py +0 -0
  268. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/comment/test_comment_base.py +0 -0
  269. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/comment/test_comment_comment.py +0 -0
  270. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/config/__init__.py +0 -0
  271. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/config/test_config_manager.py +0 -0
  272. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/config/test_config_model.py +0 -0
  273. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/conftest.py +0 -0
  274. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/issue/__init__.py +0 -0
  275. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/issue/test_issue_async_issue.py +0 -0
  276. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/issue/test_issue_async_project_column.py +0 -0
  277. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/issue/test_issue_base.py +0 -0
  278. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/issue/test_issue_dependencies.py +0 -0
  279. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/issue/test_issue_issue.py +0 -0
  280. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/issue/test_issue_project_column.py +0 -0
  281. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/label/__init__.py +0 -0
  282. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/label/test_label_async_label.py +0 -0
  283. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/label/test_label_base.py +0 -0
  284. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/label/test_label_label.py +0 -0
  285. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/milestone/__init__.py +0 -0
  286. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/milestone/test_milestone_async_milestone.py +0 -0
  287. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/milestone/test_milestone_base.py +0 -0
  288. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/milestone/test_milestone_milestone.py +0 -0
  289. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/notification/__init__.py +0 -0
  290. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/notification/test_notification_base.py +0 -0
  291. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/notification/test_notification_notification.py +0 -0
  292. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/organization/__init__.py +0 -0
  293. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/organization/test_organization_async_organization.py +0 -0
  294. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/organization/test_organization_base.py +0 -0
  295. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/organization/test_organization_organization.py +0 -0
  296. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/project/__init__.py +0 -0
  297. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/project/test_project_base.py +0 -0
  298. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/project/test_project_project.py +0 -0
  299. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/project/test_project_requests.py +0 -0
  300. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/pull_request/__init__.py +0 -0
  301. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/pull_request/test_pull_request_async_pull_request.py +0 -0
  302. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/pull_request/test_pull_request_base.py +0 -0
  303. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/pull_request/test_pull_request_pull_request.py +0 -0
  304. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/repository/__init__.py +0 -0
  305. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/repository/test_repository_async_repository.py +0 -0
  306. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/repository/test_repository_base.py +0 -0
  307. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/repository/test_repository_repository.py +0 -0
  308. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/resource/__init__.py +0 -0
  309. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/resource/test_resource_async_resource.py +0 -0
  310. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/resource/test_resource_resource.py +0 -0
  311. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/smoke_test.py +0 -0
  312. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/test_import.py +0 -0
  313. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/test_main.py +0 -0
  314. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/test_release_version.py +0 -0
  315. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/test_version.py +0 -0
  316. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/transport.py +0 -0
  317. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/user/__init__.py +0 -0
  318. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/user/test_user_async_user.py +0 -0
  319. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/user/test_user_base.py +0 -0
  320. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/user/test_user_user.py +0 -0
  321. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/utils/__init__.py +0 -0
  322. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/utils/test_utils_fields.py +0 -0
  323. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/utils/test_utils_log.py +0 -0
  324. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/utils/test_utils_pagination.py +0 -0
  325. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/utils/test_utils_response.py +0 -0
  326. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/watch/__init__.py +0 -0
  327. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/watch/test_watch_changes.py +0 -0
  328. {python_gitea-0.10.0 → python_gitea-0.10.1}/tests/watch/test_watch_state.py +0 -0
@@ -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@7cce60e19b902747b4267c4f8e53820e3f3656ea # v0.2.4
25
+ uses: isaac-cf-wong/dependency-support-policy-action@c00466ca1b1d902260e56e087c072cbb41ac038b # v0.2.5
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.3
19
+ rev: v0.16.4
20
20
  hooks:
21
21
  - id: ruff
22
22
  args: [--fix, --config=pyproject.toml]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: python-gitea
3
- Version: 0.10.0
3
+ Version: 0.10.1
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
@@ -320,7 +320,11 @@ gitea-cli project list --owner my-org --repository my-repo # that repository's
320
320
  - `gitea-cli project issue add --owner <owner> [--repository <repo>] --project-id <id> --column-id <id> --issue-id <id>`
321
321
  - Optional: `--issue-repository`
322
322
  - `gitea-cli project issue move --owner <owner> [--repository <repo>] --project-id <id> --column-id <id> --issue-id <id>`
323
- - Optional: `--sorting`, `--issue-repository`
323
+ - Optional: `--sorting`, `--issue-repository`, `--add-if-missing`
324
+ - Moves the card the issue already has on the project, and confirms it
325
+ arrived in `--column-id`. An issue with no card there is reported as an
326
+ error naming `project issue add`; `--add-if-missing` has this command put
327
+ it in `--column-id` instead.
324
328
  - `gitea-cli project issue remove --owner <owner> [--repository <repo>] --project-id <id> --column-id <id> --issue-id <id>`
325
329
  - Optional: `--issue-repository`
326
330
 
@@ -338,6 +342,40 @@ for you:
338
342
  ID. `--issue-repository` also overrides `--repository`, for the case of a
339
343
  repository project holding an issue from elsewhere.
340
344
 
345
+ `add` and `move` are not two ways of doing the same thing. `add` puts an issue
346
+ on a board, giving it a card in a column; `move` relocates the card it already
347
+ has there, and an issue with no card has nothing to relocate. Gitea's move
348
+ endpoint does not say so - it moves the row relating the issue to the project,
349
+ of which there is none, and answers with a success and an empty body having
350
+ moved nothing - so the command finds the card first and reports its absence
351
+ itself:
352
+
353
+ ```console
354
+ $ gitea-cli project issue move --owner my-org --project-id 1 --column-id 2 \
355
+ --issue-repository my-repo --issue-id 42
356
+ No column of project 1 holds issue #42 of my-org/my-repo (global ID 1854), so there is
357
+ no card to move. [...] Put the issue on the board with 'gitea-cli project issue add
358
+ --owner my-org --project-id 1 --column-id 2 --issue-id 42 --issue-repository my-repo',
359
+ or pass --add-if-missing to have this command do that when there is no card yet.
360
+ ```
361
+
362
+ `--add-if-missing` makes the one call do either, which is what a script
363
+ advancing cards through columns wants: the card is moved when it exists and
364
+ created in `--column-id` when it does not. `--sorting` is refused on that second
365
+ path rather than dropped, since the endpoint putting a card on a board takes no
366
+ position within the column. A board that cannot be read is reported as such and
367
+ stops the move: a failed lookup is not evidence that the issue has no card.
368
+
369
+ Whichever call is made, `--column-id` is then read back, because the success the
370
+ endpoint answers with has already been shown not to mean the card went anywhere.
371
+ A zero exit status therefore says the card was seen in that column, rather than
372
+ that Gitea accepted a request to put it there - and the three ways that can fail
373
+ are reported apart: the issue has no card at all, the card is not in the column
374
+ it was sent to, or the reading back could not be done and it is unknown which.
375
+ It does not say the card is still there: the calls are separate requests, and
376
+ Gitea has no conditional move to make them one, so a card taken off the board
377
+ after the command read it is outside what any client can report on.
378
+
341
379
  The global ID the command used comes back as `metadata.resolved_issue_id`. A
342
380
  number the repository does not have, and a call the project endpoint refuses,
343
381
  are both reported as errors naming the issue and what to check - never as an
@@ -527,8 +565,8 @@ gitea-cli issue create \
527
565
  --milestone 3
528
566
  ```
529
567
 
530
- Move an issue into a project column, addressing it by the number shown in the
531
- web UI:
568
+ Put an issue on a project board, in a column of it, addressing the issue by the
569
+ number shown in the web UI:
532
570
 
533
571
  ```bash
534
572
  gitea-cli project issue add \
@@ -539,8 +577,9 @@ gitea-cli project issue add \
539
577
  --issue-id 42
540
578
  ```
541
579
 
542
- Move `my-repo#42` on an organization project, where the repository holding the
543
- issue has to be named separately:
580
+ Move the card of `my-repo#42` on an organization project, where the repository
581
+ holding the issue has to be named separately, and put it on the board if it is
582
+ not there yet:
544
583
 
545
584
  ```bash
546
585
  gitea-cli project issue move \
@@ -548,7 +587,8 @@ gitea-cli project issue move \
548
587
  --project-id 1 \
549
588
  --column-id 2 \
550
589
  --issue-repository my-repo \
551
- --issue-id 42
590
+ --issue-id 42 \
591
+ --add-if-missing
552
592
  ```
553
593
 
554
594
  List the issues sitting in one column of an organization project (omit
@@ -90,6 +90,38 @@ Both are best-effort, and `column_id` should be read with that in mind:
90
90
  - The columns of a user-owned (individual) project live under endpoints this
91
91
  library does not wrap, so such a project's `column_id` is always `None`.
92
92
 
93
+ That last point is about the enrichment and not about the walk itself.
94
+ `find_card_column_id` is the walk on its own — one project, one issue, the
95
+ column holding its card or `None` when no column of the board lists it — and it
96
+ raises what the lookup raised rather than logging it, for a caller that has to
97
+ tell "no card" apart from "could not be read":
98
+
99
+ ```python
100
+ from gitea.client.gitea import Gitea
101
+ from gitea.issue import find_card_column_id
102
+
103
+ with Gitea(token="TOKEN", base_url="https://gitea.example.com") as client:
104
+ column_id = find_card_column_id(
105
+ client=client,
106
+ owner="my-org",
107
+ repository=None, # the organization's own project; a repository's names it
108
+ project_id=1,
109
+ issue_id=1854, # the global ID, which is what the columns list their issues by
110
+ )
111
+ print("not on the board" if column_id is None else column_id)
112
+ ```
113
+
114
+ `find_async_card_column_id` is its `await`-based twin. Asking this before moving
115
+ a card is what `gitea-cli project issue move` does: Gitea's move endpoint moves
116
+ the row relating an issue to a project, and for an issue that is not on the
117
+ project there is none to move, so the call comes back a success having done
118
+ nothing.
119
+
120
+ `column_holds_card` is the same question about a single named column, at the
121
+ cost of that column's listing rather than the board's — which is what the walk
122
+ above asks per column, and what the same command asks again after the move to
123
+ confirm the card arrived. `async_column_holds_card` is its `await`-based twin.
124
+
93
125
  ## Asynchronous Client
94
126
 
95
127
  The `AsyncGitea` client has the same structure but `await`-based, and it uses
@@ -35,7 +35,7 @@ dev = [
35
35
  # the pytest plugins the suite's own options need. Run from a tool environment
36
36
  # of its own it cannot read `--cov`, and the run dies at collection.
37
37
  "mutmut>=3.7.0",
38
- "prek>=0.4.13",
38
+ "prek>=0.4.14",
39
39
  "pytest-github-actions-annotate-failures>=0.4.2",
40
40
  "pytest-cov>=7.1.0",
41
41
  "pytest-mock>=3.15.1",
@@ -54,6 +54,12 @@ def add_issue_command(
54
54
  ) -> None:
55
55
  """Add an issue to a project column.
56
56
 
57
+ This is the command for putting an issue on a board, where 'project issue
58
+ move' relocates a card the issue already has on the project. An issue with
59
+ none is not something a move can act on, so this is what runs for it -
60
+ either on its own, or as what 'project issue move --add-if-missing' falls
61
+ back to when it finds no card.
62
+
57
63
  Args:
58
64
  ctx: The Typer context.
59
65
  owner: The owner of the repository.
@@ -23,6 +23,13 @@ def move_issue_command(
23
23
  int | None,
24
24
  typer.Option("--sorting", help="Position within the column, ascending."),
25
25
  ] = None,
26
+ add_if_missing: Annotated[
27
+ bool,
28
+ typer.Option(
29
+ "--add-if-missing",
30
+ help="Put the issue in the target column when it has no card on the project yet, instead of failing.",
31
+ ),
32
+ ] = False,
26
33
  repository: Annotated[
27
34
  str | None,
28
35
  typer.Option("--repository", help="Name of the repository. Omit for organization projects."),
@@ -56,7 +63,14 @@ def move_issue_command(
56
63
  ),
57
64
  ] = None,
58
65
  ) -> None:
59
- """Move an issue between a project's columns.
66
+ """Move an issue's card between a project's columns.
67
+
68
+ The issue has to be on the project already: a move relocates the card the
69
+ issue has there, and an issue with no card has nothing to relocate. Gitea
70
+ answers such a call with a success all the same, so the card is looked for
71
+ first and its absence is reported as an error naming 'project issue add',
72
+ which is the command that puts an issue on a board. Pass --add-if-missing to
73
+ have this command do that itself when there is no card yet.
60
74
 
61
75
  Args:
62
76
  ctx: The Typer context.
@@ -67,6 +81,8 @@ def move_issue_command(
67
81
  global issue ID when that repository is not known.
68
82
  column_id: The target column ID.
69
83
  sorting: The position within the column, ascending.
84
+ add_if_missing: Whether to put the issue in the target column when it has
85
+ no card on the project yet, rather than reporting that it has none.
70
86
  issue_repository: The name of the repository holding the issue,
71
87
  defaulting to the repository holding the project.
72
88
  account_name: Name of the account to use for authentication.
@@ -78,7 +94,7 @@ def move_issue_command(
78
94
 
79
95
  from gitea.cli.utils.api import execute_api_command # noqa: PLC0415
80
96
  from gitea.cli.utils.auth import get_auth_params # noqa: PLC0415
81
- from gitea.cli.utils.issue import run_project_issue_call # noqa: PLC0415
97
+ from gitea.cli.utils.issue import run_project_issue_move # noqa: PLC0415
82
98
  from gitea.client.gitea import Gitea # noqa: PLC0415
83
99
 
84
100
  token, base_url = get_auth_params(
@@ -96,21 +112,16 @@ def move_issue_command(
96
112
 
97
113
  """
98
114
  with Gitea(token=token, base_url=base_url) as client:
99
- return run_project_issue_call(
115
+ return run_project_issue_move(
100
116
  client=client,
101
- call=lambda resolved_issue_id: client.project.move_project_issue(
102
- owner=owner,
103
- repository=repository,
104
- project_id=project_id,
105
- issue_id=resolved_issue_id,
106
- column_id=column_id,
107
- sorting=sorting,
108
- ),
109
- action="move",
110
117
  owner=owner,
118
+ repository=repository,
111
119
  project_id=project_id,
112
120
  issue_number=issue_id,
121
+ column_id=column_id,
122
+ sorting=sorting,
113
123
  issue_repository=issue_repository or repository,
124
+ add_if_missing=add_if_missing,
114
125
  )
115
126
 
116
127
  execute_api_command(api_call=api_call, base_url=base_url, command_name="gitea-cli project issue move")
@@ -48,8 +48,18 @@ def register_commands() -> None:
48
48
  project_app.add_typer(column_app, name="column", help="Commands for managing project columns.")
49
49
 
50
50
  issue_app = typer.Typer(name="issue", help="Commands for managing project issues.", rich_markup_mode="rich")
51
- issue_app.command("add", help="Add an issue to a project column.")(add_issue_command)
52
- issue_app.command("move", help="Move an issue between a project's columns.")(move_issue_command)
51
+ issue_app.command(
52
+ "add",
53
+ help="Add an issue to a project column. This is what puts an issue on a board that has no card for it.",
54
+ )(add_issue_command)
55
+ issue_app.command(
56
+ "move",
57
+ help=(
58
+ "Move an issue's card between a project's columns. The issue has to be on the project already, "
59
+ "since a move relocates the card it has there; pass --add-if-missing to put it in the target column "
60
+ "when it has none."
61
+ ),
62
+ )(move_issue_command)
53
63
  issue_app.command("remove", help="Remove an issue from a project column.")(remove_issue_command)
54
64
  project_app.add_typer(issue_app, name="issue", help="Commands for managing project issues.")
55
65