hikari-arc 1.4.0__tar.gz → 2.1.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.
Files changed (224) hide show
  1. hikari_arc-2.1.0/.editorconfig +9 -0
  2. hikari_arc-2.1.0/.gitattributes +1 -0
  3. hikari_arc-2.1.0/.github/FUNDING.yml +1 -0
  4. hikari_arc-2.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +70 -0
  5. hikari_arc-2.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
  6. hikari_arc-2.1.0/.github/ISSUE_TEMPLATE/suggestion.yml +36 -0
  7. hikari_arc-2.1.0/.github/workflows/ci.yml +67 -0
  8. hikari_arc-2.1.0/.github/workflows/docs.yml +55 -0
  9. hikari_arc-2.1.0/.github/workflows/publish.yml +19 -0
  10. hikari_arc-2.1.0/.gitignore +135 -0
  11. hikari_arc-2.1.0/.idea/.gitignore +3 -0
  12. hikari_arc-2.1.0/.idea/externalDependencies.xml +6 -0
  13. hikari_arc-2.1.0/.idea/hikari-arc.iml +21 -0
  14. hikari_arc-2.1.0/.idea/inspectionProfiles/profiles_settings.xml +6 -0
  15. hikari_arc-2.1.0/.idea/modules.xml +8 -0
  16. hikari_arc-2.1.0/.idea/vcs.xml +6 -0
  17. hikari_arc-2.1.0/.vscode/extensions.json +9 -0
  18. hikari_arc-2.1.0/.vscode/python.code-snippets +34 -0
  19. hikari_arc-2.1.0/.vscode/settings.json +20 -0
  20. hikari_arc-2.1.0/.vscode/tasks.json +17 -0
  21. hikari_arc-2.1.0/CONTRIBUTING.md +58 -0
  22. {hikari_arc-1.4.0/hikari_arc.egg-info → hikari_arc-2.1.0}/PKG-INFO +21 -35
  23. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/__init__.py +79 -84
  24. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/abc/client.py +113 -146
  25. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/abc/command.py +54 -11
  26. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/abc/option.py +6 -6
  27. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/abc/plugin.py +84 -14
  28. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/client.py +45 -17
  29. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/message.py +10 -5
  30. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/float.py +1 -1
  31. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/int.py +1 -1
  32. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/str.py +1 -1
  33. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/slash.py +18 -10
  34. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/user.py +10 -5
  35. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/context/__init__.py +1 -1
  36. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/context/autocomplete.py +19 -5
  37. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/context/base.py +77 -15
  38. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/internal/__init__.py +1 -10
  39. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/internal/about.py +1 -6
  40. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/internal/sync.py +6 -3
  41. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/internal/version.py +1 -1
  42. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/plugin.py +15 -7
  43. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/utils/concurrency_limiter.py +7 -7
  44. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/utils/hooks/basic.py +1 -4
  45. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/utils/loops.py +2 -2
  46. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/utils/ratelimiter.py +1 -1
  47. hikari_arc-2.1.0/docs/README.md +13 -0
  48. hikari_arc-2.1.0/docs/api_reference/abc/client.md +8 -0
  49. hikari_arc-2.1.0/docs/api_reference/abc/command.md +8 -0
  50. hikari_arc-2.1.0/docs/api_reference/abc/concurrency_limiting.md +8 -0
  51. hikari_arc-2.1.0/docs/api_reference/abc/error_handler.md +8 -0
  52. hikari_arc-2.1.0/docs/api_reference/abc/hooks.md +8 -0
  53. hikari_arc-2.1.0/docs/api_reference/abc/index.md +8 -0
  54. hikari_arc-2.1.0/docs/api_reference/abc/limiter.md +8 -0
  55. hikari_arc-2.1.0/docs/api_reference/abc/option.md +8 -0
  56. hikari_arc-2.1.0/docs/api_reference/abc/plugin.md +8 -0
  57. hikari_arc-2.1.0/docs/api_reference/client.md +8 -0
  58. hikari_arc-2.1.0/docs/api_reference/command/index.md +8 -0
  59. hikari_arc-2.1.0/docs/api_reference/command/message.md +8 -0
  60. hikari_arc-2.1.0/docs/api_reference/command/option.md +8 -0
  61. hikari_arc-2.1.0/docs/api_reference/command/slash.md +8 -0
  62. hikari_arc-2.1.0/docs/api_reference/command/user.md +8 -0
  63. hikari_arc-2.1.0/docs/api_reference/context.md +9 -0
  64. hikari_arc-2.1.0/docs/api_reference/errors.md +8 -0
  65. hikari_arc-2.1.0/docs/api_reference/events.md +8 -0
  66. hikari_arc-2.1.0/docs/api_reference/index.md +10 -0
  67. hikari_arc-2.1.0/docs/api_reference/localization.md +8 -0
  68. hikari_arc-2.1.0/docs/api_reference/plugin.md +12 -0
  69. hikari_arc-2.1.0/docs/api_reference/utils/concurrency_limiter.md +13 -0
  70. hikari_arc-2.1.0/docs/api_reference/utils/hooks/basic.md +13 -0
  71. hikari_arc-2.1.0/docs/api_reference/utils/hooks/limiters.md +13 -0
  72. hikari_arc-2.1.0/docs/api_reference/utils/index.md +8 -0
  73. hikari_arc-2.1.0/docs/api_reference/utils/loops.md +10 -0
  74. hikari_arc-2.1.0/docs/api_reference/utils/ratelimiter.md +10 -0
  75. hikari_arc-2.1.0/docs/assets/app_commands.webp +0 -0
  76. hikari_arc-2.1.0/docs/assets/branding/composed-darkmode.png +0 -0
  77. hikari_arc-2.1.0/docs/assets/branding/composed-darkmode.svg +41 -0
  78. hikari_arc-2.1.0/docs/assets/branding/composed-darkmode@2x.png +0 -0
  79. hikari_arc-2.1.0/docs/assets/branding/composed-lightmode.png +0 -0
  80. hikari_arc-2.1.0/docs/assets/branding/composed-lightmode.svg +42 -0
  81. hikari_arc-2.1.0/docs/assets/branding/composed-lightmode@2x.png +0 -0
  82. hikari_arc-2.1.0/docs/assets/branding/logo-darkmode.png +0 -0
  83. hikari_arc-2.1.0/docs/assets/branding/logo-darkmode.svg +17 -0
  84. hikari_arc-2.1.0/docs/assets/branding/logo-darkmode@2x.png +0 -0
  85. hikari_arc-2.1.0/docs/assets/branding/logo-lightmode.png +0 -0
  86. hikari_arc-2.1.0/docs/assets/branding/logo-lightmode.svg +17 -0
  87. hikari_arc-2.1.0/docs/assets/branding/logo-lightmode@2x.png +0 -0
  88. hikari_arc-2.1.0/docs/assets/branding/name-darkmode.png +0 -0
  89. hikari_arc-2.1.0/docs/assets/branding/name-darkmode.svg +30 -0
  90. hikari_arc-2.1.0/docs/assets/branding/name-darkmode@2x.png +0 -0
  91. hikari_arc-2.1.0/docs/assets/branding/name-lightmode.png +0 -0
  92. hikari_arc-2.1.0/docs/assets/branding/name-lightmode.svg +30 -0
  93. hikari_arc-2.1.0/docs/assets/branding/name-lightmode@2x.png +0 -0
  94. hikari_arc-2.1.0/docs/assets/context_menu.png +0 -0
  95. hikari_arc-2.1.0/docs/assets/ephemeral.png +0 -0
  96. hikari_arc-2.1.0/docs/assets/getting-started/image-1.webp +0 -0
  97. hikari_arc-2.1.0/docs/assets/getting-started/image-2.webp +0 -0
  98. hikari_arc-2.1.0/docs/assets/getting-started/image-3.webp +0 -0
  99. hikari_arc-2.1.0/docs/assets/getting-started/image-4.webp +0 -0
  100. hikari_arc-2.1.0/docs/assets/getting-started/image-5.webp +0 -0
  101. hikari_arc-2.1.0/docs/assets/installation_contexts.png +0 -0
  102. hikari_arc-2.1.0/docs/assets/inter_flow_dark.png +0 -0
  103. hikari_arc-2.1.0/docs/assets/inter_flow_light.png +0 -0
  104. hikari_arc-2.1.0/docs/assets/subcommands.png +0 -0
  105. hikari_arc-2.1.0/docs/assets/typing/image-0.png +0 -0
  106. hikari_arc-2.1.0/docs/assets/typing/image-1.png +0 -0
  107. hikari_arc-2.1.0/docs/assets/typing/image-2.png +0 -0
  108. hikari_arc-2.1.0/docs/assets/typing/image-3.png +0 -0
  109. hikari_arc-2.1.0/docs/assets/typing/image-4.png +0 -0
  110. hikari_arc-2.1.0/docs/assets/typing/image-5.png +0 -0
  111. hikari_arc-2.1.0/docs/assets/user_install.png +0 -0
  112. hikari_arc-2.1.0/docs/changelog.md +223 -0
  113. hikari_arc-2.1.0/docs/getting_started.md +270 -0
  114. hikari_arc-2.1.0/docs/guides/command_groups.md +179 -0
  115. hikari_arc-2.1.0/docs/guides/concurrency_limiting.md +72 -0
  116. hikari_arc-2.1.0/docs/guides/context_menu.md +64 -0
  117. hikari_arc-2.1.0/docs/guides/dependency_injection.md +213 -0
  118. hikari_arc-2.1.0/docs/guides/error_handling.md +78 -0
  119. hikari_arc-2.1.0/docs/guides/events.md +49 -0
  120. hikari_arc-2.1.0/docs/guides/hikari_fundamentals.md +80 -0
  121. hikari_arc-2.1.0/docs/guides/hooks.md +252 -0
  122. hikari_arc-2.1.0/docs/guides/index.md +152 -0
  123. hikari_arc-2.1.0/docs/guides/installation_contexts.md +192 -0
  124. hikari_arc-2.1.0/docs/guides/interactions.md +148 -0
  125. hikari_arc-2.1.0/docs/guides/loops.md +91 -0
  126. hikari_arc-2.1.0/docs/guides/options.md +261 -0
  127. hikari_arc-2.1.0/docs/guides/plugins_extensions.md +251 -0
  128. hikari_arc-2.1.0/docs/guides/startup_shutdown.md +62 -0
  129. hikari_arc-2.1.0/docs/guides/typing.md +372 -0
  130. hikari_arc-2.1.0/docs/index.md +50 -0
  131. hikari_arc-2.1.0/docs/stylesheets/additional_coloring.css +58 -0
  132. hikari_arc-2.1.0/examples/README.md +33 -0
  133. hikari_arc-2.1.0/examples/gateway/basic.py +24 -0
  134. hikari_arc-2.1.0/examples/gateway/context_menu.py +33 -0
  135. hikari_arc-2.1.0/examples/gateway/custom_client.py +39 -0
  136. hikari_arc-2.1.0/examples/gateway/dependency_injection.py +47 -0
  137. hikari_arc-2.1.0/examples/gateway/error_handling.py +49 -0
  138. hikari_arc-2.1.0/examples/gateway/extension_example/bot.py +15 -0
  139. hikari_arc-2.1.0/examples/gateway/extension_example/extensions/bar.py +24 -0
  140. hikari_arc-2.1.0/examples/gateway/extension_example/extensions/foo.py +24 -0
  141. hikari_arc-2.1.0/examples/gateway/hooks.py +53 -0
  142. hikari_arc-2.1.0/examples/gateway/limiters.py +31 -0
  143. hikari_arc-2.1.0/examples/gateway/limiting_concurrency.py +35 -0
  144. hikari_arc-2.1.0/examples/gateway/localization.py +64 -0
  145. hikari_arc-2.1.0/examples/gateway/loops.py +35 -0
  146. hikari_arc-2.1.0/examples/gateway/options.py +72 -0
  147. hikari_arc-2.1.0/examples/rest/basic.py +41 -0
  148. hikari_arc-2.1.0/examples/rest/context_menu.py +33 -0
  149. hikari_arc-2.1.0/examples/rest/custom_client.py +39 -0
  150. hikari_arc-2.1.0/examples/rest/dependency_injection.py +47 -0
  151. hikari_arc-2.1.0/examples/rest/error_handling.py +49 -0
  152. hikari_arc-2.1.0/examples/rest/extension_example/bot.py +15 -0
  153. hikari_arc-2.1.0/examples/rest/extension_example/extensions/bar.py +24 -0
  154. hikari_arc-2.1.0/examples/rest/extension_example/extensions/foo.py +24 -0
  155. hikari_arc-2.1.0/examples/rest/hooks.py +53 -0
  156. hikari_arc-2.1.0/examples/rest/limiters.py +31 -0
  157. hikari_arc-2.1.0/examples/rest/limiting_concurrency.py +35 -0
  158. hikari_arc-2.1.0/examples/rest/localization.py +64 -0
  159. hikari_arc-2.1.0/examples/rest/loops.py +35 -0
  160. hikari_arc-2.1.0/examples/rest/options.py +72 -0
  161. hikari_arc-2.1.0/mkdocs.yml +190 -0
  162. hikari_arc-2.1.0/noxfile.py +112 -0
  163. hikari_arc-2.1.0/pyproject.toml +135 -0
  164. hikari_arc-2.1.0/tests/mock_client.py +75 -0
  165. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/tests/test_client.py +12 -0
  166. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/tests/test_command.py +15 -2
  167. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/tests/test_context_command.py +0 -2
  168. hikari_arc-2.1.0/tests/test_extension/extension.py +60 -0
  169. hikari_arc-2.1.0/tests/test_extension/test_main.py +14 -0
  170. hikari_arc-2.1.0/tests/test_inheritance.py +82 -0
  171. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/tests/test_slash.py +0 -2
  172. hikari_arc-2.1.0/uv.lock +1684 -0
  173. hikari_arc-1.4.0/MANIFEST.in +0 -11
  174. hikari_arc-1.4.0/PKG-INFO +0 -139
  175. hikari_arc-1.4.0/cron_requirements.txt +0 -2
  176. hikari_arc-1.4.0/dev_requirements.txt +0 -7
  177. hikari_arc-1.4.0/doc_requirements.txt +0 -6
  178. hikari_arc-1.4.0/hikari_arc.egg-info/SOURCES.txt +0 -79
  179. hikari_arc-1.4.0/hikari_arc.egg-info/dependency_links.txt +0 -1
  180. hikari_arc-1.4.0/hikari_arc.egg-info/not-zip-safe +0 -1
  181. hikari_arc-1.4.0/hikari_arc.egg-info/requires.txt +0 -30
  182. hikari_arc-1.4.0/hikari_arc.egg-info/top_level.txt +0 -1
  183. hikari_arc-1.4.0/pyproject.toml +0 -54
  184. hikari_arc-1.4.0/requirements.txt +0 -3
  185. hikari_arc-1.4.0/rest_requirements.txt +0 -1
  186. hikari_arc-1.4.0/setup.cfg +0 -4
  187. hikari_arc-1.4.0/setup.py +0 -103
  188. hikari_arc-1.4.0/tests/test_inheritance.py +0 -56
  189. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/LICENSE +0 -0
  190. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/README.md +0 -0
  191. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/__main__.py +0 -0
  192. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/abc/__init__.py +14 -14
  193. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/abc/concurrency_limiting.py +0 -0
  194. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/abc/error_handler.py +0 -0
  195. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/abc/hookable.py +0 -0
  196. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/abc/limiter.py +0 -0
  197. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/__init__.py +27 -27
  198. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/__init__.py +16 -16
  199. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/attachment.py +0 -0
  200. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/bool.py +0 -0
  201. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/channel.py +0 -0
  202. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/custom/__init__.py +2 -2
  203. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/custom/color.py +0 -0
  204. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/custom/emoji.py +0 -0
  205. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/custom/member.py +0 -0
  206. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/mentionable.py +0 -0
  207. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/role.py +0 -0
  208. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/command/option/user.py +0 -0
  209. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/errors.py +0 -0
  210. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/events.py +0 -0
  211. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/ext/__init__.py +0 -0
  212. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/extension.py +0 -0
  213. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/internal/deprecation.py +0 -0
  214. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/internal/options.py +0 -0
  215. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/internal/sigparse.py +0 -0
  216. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/internal/types.py +0 -0
  217. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/locale.py +3 -3
  218. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/py.typed +0 -0
  219. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/utils/__init__.py +19 -19
  220. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/utils/hooks/__init__.py +8 -8
  221. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/arc/utils/hooks/limiters.py +3 -3
  222. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/tests/test_di.py +0 -0
  223. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/tests/test_options.py +0 -0
  224. {hikari_arc-1.4.0 → hikari_arc-2.1.0}/tests/test_sigparse.py +0 -0
@@ -0,0 +1,9 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 4
6
+ end_of_line = lf
7
+ charset = utf-8
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
@@ -0,0 +1 @@
1
+ * text=auto eol=lf
@@ -0,0 +1 @@
1
+ github: hypergonial
@@ -0,0 +1,70 @@
1
+ name: Bug report
2
+ description: Found a bug with the library? Report it here!
3
+ labels: ["bug"]
4
+ assignees:
5
+ - hypergonial
6
+
7
+ body:
8
+ - type: textarea
9
+ id: reproduction-steps
10
+ attributes:
11
+ label: Steps to reproduce
12
+ description: Steps to reproduce the bug. Please be as detailed as possible in your explanations, and ensure the bug can be reproduced with these steps.
13
+ value: |
14
+ 1. Run code
15
+ 2. Do stuff
16
+ 3. Crash system
17
+ 4. Observe bug
18
+ validations:
19
+ required: true
20
+
21
+ - type: textarea
22
+ id: expected-result
23
+ attributes:
24
+ label: Expected result
25
+ description: What should have happened if the bug wasn't there?
26
+ validations:
27
+ required: true
28
+
29
+ - type: textarea
30
+ id: actual-result
31
+ attributes:
32
+ label: Actual result
33
+ description: What happened exactly? Please provide a detailed explanation, and any errors, tracebacks, or other information.
34
+ validations:
35
+ required: true
36
+
37
+ - type: textarea
38
+ id: system-info
39
+ attributes:
40
+ label: System information
41
+ description: The output of `python -m arc`.
42
+ placeholder: |
43
+ hikari-arc - package information
44
+ ----------------------------------
45
+ Arc version: 0.1.0
46
+ Install path: /home/foo/.local/lib/python3.10/site-packages/arc
47
+ Hikari version: 2.0.0.dev109
48
+ Install path: /home/foo/.local/lib/python3.10/site-packages/hikari
49
+ Python: CPython 3.10.4 (GCC 11.2.0)
50
+ System: Linux x86_64 (archlinux) - 5.17.1-zen1-1-zen
51
+ render: shell
52
+ validations:
53
+ required: true
54
+
55
+ - type: textarea
56
+ id: further-info
57
+ attributes:
58
+ label: Further information
59
+ description: Any further information, images, or other resources go here.
60
+
61
+ - type: checkboxes
62
+ id: checklist
63
+ attributes:
64
+ label: Checklist
65
+ description: Make sure to tick all the following boxes.
66
+ options:
67
+ - label: I have made sure to remove ANY sensitive information (bot token, passwords, credentials, personal details, etc.).
68
+ required: true
69
+ - label: I have searched the issue tracker and have made sure it's not a duplicate. If it is a follow up of another issue, I have specified it.
70
+ required: true
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Discord server
4
+ url: https://discord.gg/hikari
5
+ about: Ask questions about the library in the server!
@@ -0,0 +1,36 @@
1
+ name: Suggestion
2
+ description: Do you have an idea on improving the library? Share it with us!
3
+ labels: ["enhancement"]
4
+
5
+ body:
6
+ - type: textarea
7
+ id: summary
8
+ attributes:
9
+ label: Summary
10
+ description: Small summary of the suggestion.
11
+ validations:
12
+ required: true
13
+
14
+ - type: textarea
15
+ id: problem
16
+ attributes:
17
+ label: Why is this needed?
18
+ description: Why should this suggestion be implemented? What problem(s) would it solve?
19
+ validations:
20
+ required: true
21
+
22
+ - type: textarea
23
+ id: ideal-implementation
24
+ attributes:
25
+ label: Ideal implementation
26
+ description: How should this suggestion be implemented?
27
+ value: To be decided.
28
+
29
+ - type: checkboxes
30
+ id: checklist
31
+ attributes:
32
+ label: Checklist
33
+ description: Make sure to tick all the following boxes.
34
+ options:
35
+ - label: I have searched the issue tracker and have made sure it's not a duplicate. If it is a follow up of another issue, I have specified it.
36
+ required: true
@@ -0,0 +1,67 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ formatting:
7
+ runs-on: ubuntu-latest
8
+ name: "Run ruff via nox"
9
+ steps:
10
+ - uses: actions/checkout@v4
11
+ - name: Install uv
12
+ uses: astral-sh/setup-uv@v5
13
+ with:
14
+ version: "0.6.4"
15
+ python-version: "3.13"
16
+
17
+ - name: Run ruff via nox
18
+ run: |
19
+ uv run nox -s format
20
+
21
+ pyright:
22
+ runs-on: ubuntu-latest
23
+ name: "Run pyright via nox"
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ - name: Install uv
27
+ uses: astral-sh/setup-uv@v5
28
+ with:
29
+ version: "0.6.4"
30
+ python-version: "3.13"
31
+
32
+ - name: Run pyright via nox
33
+ run: |
34
+ uv run nox -s pyright
35
+
36
+ slotscheck:
37
+ runs-on: ubuntu-latest
38
+ name: "Run slotscheck via nox"
39
+ steps:
40
+ - uses: actions/checkout@v4
41
+ - name: Install uv
42
+ uses: astral-sh/setup-uv@v5
43
+ with:
44
+ version: "0.6.4"
45
+ python-version: "3.13"
46
+
47
+ - name: Run slotscheck via nox
48
+ run: |
49
+ uv run nox -s slotscheck
50
+
51
+ pytest:
52
+ runs-on: ubuntu-latest
53
+ strategy:
54
+ matrix:
55
+ python-version: ['3.10', '3.11', '3.12', '3.13']
56
+ fail-fast: false
57
+
58
+ name: Run pytest via nox on Python ${{ matrix.python-version }}
59
+ steps:
60
+ - uses: actions/checkout@v4
61
+ - name: Install uv with Python ${{ matrix.python-version }}
62
+ uses: astral-sh/setup-uv@v5
63
+ with:
64
+ version: "0.6.4"
65
+ python-version: ${{ matrix.python-version }}
66
+ - run: |
67
+ uv run nox -s pytest
@@ -0,0 +1,55 @@
1
+ name: Deploy docs to Pages
2
+
3
+ on:
4
+ # Allows you to run this workflow manually from the Actions tab
5
+ workflow_dispatch:
6
+
7
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
8
+ permissions:
9
+ contents: read
10
+ pages: write
11
+ id-token: write
12
+
13
+ # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
14
+ # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
15
+ concurrency:
16
+ group: "pages"
17
+ cancel-in-progress: false
18
+
19
+ jobs:
20
+ # Build job
21
+ build:
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+
26
+ - name: Setup Pages
27
+ id: pages
28
+ uses: actions/configure-pages@v5
29
+
30
+ - name: Install uv
31
+ uses: astral-sh/setup-uv@v5
32
+ with:
33
+ version: "0.6.4"
34
+ python-version: "3.11"
35
+
36
+ - name: Build docs via nox
37
+ run: |
38
+ uv run nox -s docs
39
+
40
+ - name: Upload artifact
41
+ uses: actions/upload-pages-artifact@v3
42
+ with:
43
+ path: ./site
44
+
45
+ # Deployment job
46
+ deploy:
47
+ environment:
48
+ name: github-pages
49
+ url: ${{ steps.deployment.outputs.page_url }}
50
+ runs-on: ubuntu-latest
51
+ needs: build
52
+ steps:
53
+ - name: Deploy to GitHub Pages
54
+ id: deployment
55
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,19 @@
1
+ name: publish
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ publish:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - uses: astral-sh/setup-uv@v5
13
+ with:
14
+ version: "0.6.4"
15
+ python-version: "3.13"
16
+ - name: publish
17
+ run: |
18
+ uv build --no-sources
19
+ uv publish --token ${{ secrets.PYPI_TOKEN }}
@@ -0,0 +1,135 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ target/
76
+
77
+ # Jupyter Notebook
78
+ .ipynb_checkpoints
79
+
80
+ # IPython
81
+ profile_default/
82
+ ipython_config.py
83
+
84
+ # pyenv
85
+ .python-version
86
+
87
+ # pipenv
88
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
90
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
91
+ # install all needed dependencies.
92
+ #Pipfile.lock
93
+
94
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95
+ __pypackages__/
96
+
97
+ # Celery stuff
98
+ celerybeat-schedule
99
+ celerybeat.pid
100
+
101
+ # SageMath parsed files
102
+ *.sage.py
103
+
104
+ # Environments
105
+ .env
106
+ .venv
107
+ env/
108
+ venv/
109
+ ENV/
110
+ env.bak/
111
+ venv.bak/
112
+
113
+ # Spyder project settings
114
+ .spyderproject
115
+ .spyproject
116
+
117
+ # Rope project settings
118
+ .ropeproject
119
+
120
+ # mkdocs documentation
121
+ /site
122
+
123
+ # mypy
124
+ .mypy_cache/
125
+ .dmypy.json
126
+ dmypy.json
127
+
128
+ # Pyre type checker
129
+ .pyre/
130
+
131
+ # Ruff
132
+ .ruff_cache/
133
+
134
+ # Dolphin
135
+ .directory
@@ -0,0 +1,3 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ExternalDependencies">
4
+ <plugin id="org.editorconfig.editorconfigjetbrains" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="PYTHON_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <sourceFolder url="file://$MODULE_DIR$/examples" isTestSource="false" />
6
+ <sourceFolder url="file://$MODULE_DIR$/arc" isTestSource="false" />
7
+ <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
8
+ <excludeFolder url="file://$MODULE_DIR$/docs" />
9
+ </content>
10
+ <orderEntry type="inheritedJdk" />
11
+ <orderEntry type="sourceFolder" forTests="false" />
12
+ </component>
13
+ <component name="PyDocumentationSettings">
14
+ <option name="format" value="NUMPY" />
15
+ <option name="myDocStringFormat" value="NumPy" />
16
+ <option name="renderExternalDocumentation" value="true" />
17
+ </component>
18
+ <component name="TestRunnerService">
19
+ <option name="PROJECT_TEST_RUNNER" value="py.test" />
20
+ </component>
21
+ </module>
@@ -0,0 +1,6 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <settings>
3
+ <option name="USE_PROJECT_PROFILE" value="false" />
4
+ <version value="1.0" />
5
+ </settings>
6
+ </component>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/hikari-arc.iml" filepath="$PROJECT_DIR$/.idea/hikari-arc.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,9 @@
1
+ {
2
+ "recommendations": [
3
+ "ms-python.python",
4
+ "charliermarsh.ruff",
5
+ "njpwerner.autodocstring",
6
+ "EditorConfig.EditorConfig",
7
+ "tamasfe.even-better-toml"
8
+ ]
9
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "Set up new file": {
3
+ "scope": "python",
4
+ "prefix": "!!!",
5
+ "body": [
6
+ "from __future__ import annotations",
7
+ "",
8
+ "$0",
9
+ "",
10
+ "# MIT License",
11
+ "#",
12
+ "# Copyright (c) 2023-present hypergonial",
13
+ "#",
14
+ "# Permission is hereby granted, free of charge, to any person obtaining a copy",
15
+ "# of this software and associated documentation files (the \"Software\"), to deal",
16
+ "# in the Software without restriction, including without limitation the rights",
17
+ "# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
18
+ "# copies of the Software, and to permit persons to whom the Software is",
19
+ "# furnished to do so, subject to the following conditions:",
20
+ "#",
21
+ "# The above copyright notice and this permission notice shall be included in all",
22
+ "# copies or substantial portions of the Software.",
23
+ "#",
24
+ "# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
25
+ "# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
26
+ "# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
27
+ "# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
28
+ "# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
29
+ "# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE",
30
+ "# SOFTWARE."
31
+ ],
32
+ "description": "Set up a new Python source file"
33
+ }
34
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "editor.tabCompletion": "onlySnippets",
3
+ "python.analysis.autoImportCompletions": true,
4
+ "python.analysis.typeCheckingMode": "strict",
5
+ "python.analysis.diagnosticMode": "workspace",
6
+ "python.analysis.exclude": [
7
+ "build*",
8
+ ".nox*",
9
+ ],
10
+ "editor.formatOnSave": true,
11
+ "[python]": {
12
+ "editor.defaultFormatter": "charliermarsh.ruff"
13
+ },
14
+ "autoDocstring.docstringFormat": "numpy",
15
+ "python.testing.pytestArgs": [
16
+ "tests"
17
+ ],
18
+ "python.testing.unittestEnabled": false,
19
+ "python.testing.pytestEnabled": true,
20
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
3
+ // for the documentation about the tasks.json format
4
+ // Use Ctrl+Shift+B or the command palette to run nox.
5
+ "version": "2.0.0",
6
+ "tasks": [
7
+ {
8
+ "label": "Run nox",
9
+ "type": "shell",
10
+ "command": "uv run nox",
11
+ "group": {
12
+ "kind": "build",
13
+ "isDefault": true
14
+ }
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,58 @@
1
+ # Contributing
2
+
3
+ All contributions are welcome, no matter how small! However there are some caveats to be aware of, detailed below.
4
+
5
+ ## Open an issue
6
+
7
+ If your contribution is **not** a bugfix or small change, please [open an issue](https://github.com/hypergonial/hikari-arc/issues/new/choose) or contact me on [Discord](https://discord.gg/hikari) to discuss it.
8
+
9
+ ## Setting up the project
10
+
11
+ ### Installing dependencies
12
+
13
+ `arc` uses [`uv`](https://github.com/astral-sh/uv) for dependency management, you should [install it](https://docs.astral.sh/uv/getting-started/installation/#installing-uv) if you haven't already.
14
+
15
+ Use the command below to install all the tooling required to develop arc in a virtual environment:
16
+
17
+ ```sh
18
+ $ uv sync --all-extras --dev
19
+ ```
20
+
21
+ ### Running nox
22
+
23
+ Before submitting your changes, you should run [`nox`](https://pypi.org/project/nox/) and ensure all the pipelines pass successfully.
24
+ This checks the code for typing errors, antipatterns & bad practices, along with formatting it & running all tests.
25
+
26
+ ```sh
27
+ uv run nox
28
+ ```
29
+
30
+ GitHub CI runs on every pull request to verify that `nox` passes.
31
+
32
+ ### Configuring your editor
33
+
34
+ This is optional, but highly recommended if you're doing larger contributions.
35
+
36
+ #### VS Code
37
+
38
+ When cloning the project for the first time, VS Code should prompt you to install extensions recommended by the project, if you're missing any. Review and install them.
39
+
40
+ This should set up linting & typechecking to be performed as you edit the source code, along with defaulting the formatter to [`ruff`](https://astral.sh/ruff). A fairly minimal [editorconfig](https://editorconfig.org) is also applied to ensure consistency with the rest of the project.
41
+
42
+ You can also run `nox` by using the shortcut Ctrl+Shift+B. This uses VS Code's tasks system, [see here](https://go.microsoft.com/fwlink/?LinkId=733558) for more information.
43
+
44
+ Custom snippets are also available:
45
+
46
+ - `!!!` + TAB: Set up a new source file, insert annotations import & license
47
+
48
+ #### PyCharm and other JetBrains IDEs
49
+
50
+ Configuration should be applied automatically, however there is no good extension for [`ruff`](https://astral.sh/ruff), so you should doubly make sure `nox` successfully completes before committing your changes.
51
+
52
+ #### Other editors
53
+
54
+ If you want to add explicit support for other editors, please [open a PR](https://github.com/hypergonial/hikari-arc/pulls)!
55
+
56
+ ---
57
+
58
+ That's all! Thanks for reading it all. If you have suggestions as to what other things should be added here to improve the developer experience, please [open an issue](https://github.com/hypergonial/hikari-arc/issues/new/choose)!