Compare commits

...

143 Commits
v1.8 ... main

Author SHA1 Message Date
Profitroll b9550032ba Merge pull request 'Update to 3.0.1' (#98) from dev into main
Tests / test (3.10) (push) Successful in 57s Details
Tests / test (3.11) (push) Successful in 54s Details
Tests / test (3.8) (push) Successful in 1m8s Details
Tests / test (3.9) (push) Successful in 55s Details
Reviewed-on: #98
2024-05-15 00:19:03 +03:00
Profitroll 6b44a5852e
Bump own version to 3.0.1
Tests / test (3.10) (pull_request) Successful in 55s Details
Tests / test (3.11) (pull_request) Successful in 57s Details
Tests / test (3.8) (pull_request) Successful in 57s Details
Tests / test (3.9) (pull_request) Successful in 56s Details
2024-05-14 23:07:55 +02:00
Profitroll 7af4ad9655
Bump pyrofork to ~=2.3.21.post3 2024-05-14 23:04:16 +02:00
Renovate cb09910123 Update dependency pylint to v3.2.0
Tests / test (3.10) (pull_request) Successful in 55s Details
Tests / test (3.11) (pull_request) Successful in 53s Details
Tests / test (3.8) (pull_request) Successful in 57s Details
Tests / test (3.9) (pull_request) Successful in 57s Details
2024-05-14 15:03:36 +03:00
Renovate d1da6a1d8b Update dependency ujson to ~=5.10.0
Tests / test (3.10) (pull_request) Successful in 56s Details
Tests / test (3.11) (pull_request) Successful in 52s Details
Tests / test (3.8) (pull_request) Successful in 56s Details
Tests / test (3.9) (pull_request) Successful in 56s Details
2024-05-14 05:38:09 +03:00
Renovate 787fc8c590 Update dependency pylint to v3.1.1
Tests / test (3.10) (pull_request) Successful in 55s Details
Tests / test (3.11) (pull_request) Successful in 54s Details
Tests / test (3.8) (pull_request) Successful in 56s Details
Tests / test (3.9) (pull_request) Successful in 56s Details
2024-05-13 18:08:25 +03:00
Renovate b690725a47 Update dependency pytest to v8.2.0
Tests / test (3.10) (pull_request) Successful in 54s Details
Tests / test (3.11) (pull_request) Successful in 51s Details
Tests / test (3.8) (pull_request) Successful in 54s Details
Tests / test (3.9) (pull_request) Successful in 55s Details
2024-04-28 03:27:28 +03:00
Renovate 8719a44720 Update dependency tox to v4.15.0
Tests / test (3.10) (pull_request) Successful in 55s Details
Tests / test (3.11) (pull_request) Successful in 52s Details
Tests / test (3.8) (pull_request) Successful in 1m18s Details
Tests / test (3.9) (pull_request) Successful in 55s Details
2024-04-26 22:20:26 +03:00
Renovate 2fa65e7c76 Update dependency pytest to v8.1.2
Tests / test (3.10) (pull_request) Successful in 55s Details
Tests / test (3.11) (pull_request) Successful in 54s Details
Tests / test (3.8) (pull_request) Successful in 55s Details
Tests / test (3.9) (pull_request) Successful in 57s Details
2024-04-26 21:17:23 +03:00
Renovate d3502bd935 Update dependency black to v24.4.2
Tests / test (3.10) (pull_request) Successful in 55s Details
Tests / test (3.11) (pull_request) Successful in 53s Details
Tests / test (3.8) (pull_request) Successful in 55s Details
Tests / test (3.9) (pull_request) Successful in 57s Details
2024-04-26 03:37:21 +03:00
Renovate de3183d4ed Update dependency black to v24.4.1
Tests / test (3.10) (pull_request) Successful in 1m15s Details
Tests / test (3.11) (pull_request) Successful in 1m19s Details
Tests / test (3.8) (pull_request) Successful in 59s Details
Tests / test (3.9) (pull_request) Successful in 56s Details
2024-04-24 18:20:20 +03:00
Renovate 19f8383fb4 Update dependency mypy to v1.10.0
Tests / test (3.10) (pull_request) Successful in 1m1s Details
Tests / test (3.11) (pull_request) Successful in 53s Details
Tests / test (3.8) (pull_request) Successful in 56s Details
Tests / test (3.9) (pull_request) Successful in 57s Details
2024-04-24 17:17:08 +03:00
Renovate 9e957b7533 Update dependency black to v24.4.0
Tests / test (3.10) (pull_request) Successful in 55s Details
Tests / test (3.11) (pull_request) Successful in 58s Details
Tests / test (3.8) (pull_request) Successful in 54s Details
Tests / test (3.9) (pull_request) Successful in 55s Details
2024-04-12 23:30:09 +03:00
Renovate 5de6fac3dd Update dependency types-aiofiles to v23.2.0.20240403
Tests / test (3.10) (pull_request) Successful in 54s Details
Tests / test (3.11) (pull_request) Successful in 52s Details
Tests / test (3.8) (pull_request) Successful in 54s Details
Tests / test (3.9) (pull_request) Successful in 55s Details
2024-04-03 05:59:16 +03:00
Renovate de2524921e Update dependency types-aiofiles to v23.2.0.20240331
Tests / test (3.10) (pull_request) Successful in 53s Details
Tests / test (3.11) (pull_request) Successful in 52s Details
Tests / test (3.8) (pull_request) Successful in 1m2s Details
Tests / test (3.9) (pull_request) Successful in 54s Details
2024-03-31 06:10:03 +03:00
Renovate 28001f3288 Update dependency build to v1.2.1
Tests / test (3.10) (pull_request) Successful in 1m17s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m15s Details
2024-03-28 17:33:39 +02:00
Renovate af82545980 Update dependency pytest-cov to v5
Tests / test (3.10) (pull_request) Successful in 1m21s Details
Tests / test (3.11) (pull_request) Successful in 1m11s Details
Tests / test (3.8) (pull_request) Successful in 1m14s Details
Tests / test (3.9) (pull_request) Successful in 1m17s Details
2024-03-24 23:11:11 +02:00
Renovate 8308ed0c9d Update dependency tox to v4.14.2
Tests / test (3.10) (pull_request) Successful in 1m28s Details
Tests / test (3.11) (pull_request) Successful in 1m14s Details
Tests / test (3.8) (pull_request) Successful in 1m16s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-03-22 18:15:34 +02:00
Renovate bf9f19321a Update dependency pytest-asyncio to v0.23.6
Tests / test (3.10) (pull_request) Successful in 1m27s Details
Tests / test (3.11) (pull_request) Successful in 1m12s Details
Tests / test (3.8) (pull_request) Successful in 1m18s Details
Tests / test (3.9) (pull_request) Successful in 1m17s Details
2024-03-19 09:21:03 +02:00
Renovate 6284d6e631 Update dependency black to v24.3.0
Tests / test (3.10) (pull_request) Successful in 2m4s Details
Tests / test (3.11) (pull_request) Successful in 1m16s Details
Tests / test (3.8) (pull_request) Successful in 1m16s Details
Tests / test (3.9) (pull_request) Successful in 1m15s Details
2024-03-15 22:19:32 +02:00
Renovate 63a6542293 Update dependency types-aiofiles to v23.2.0.20240311
Tests / test (3.10) (pull_request) Successful in 1m23s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m16s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-03-11 04:32:55 +02:00
Renovate 6521a9a510 Update dependency types-aiofiles to v23.2.0.20240310
Tests / test (3.10) (pull_request) Successful in 1m24s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m17s Details
Tests / test (3.9) (pull_request) Successful in 1m17s Details
2024-03-10 04:39:55 +02:00
Renovate 1d22188bfc Update dependency pytest to v8.1.1
Tests / test (3.10) (pull_request) Successful in 1m28s Details
Tests / test (3.11) (pull_request) Successful in 1m20s Details
Tests / test (3.8) (pull_request) Successful in 1m16s Details
Tests / test (3.9) (pull_request) Successful in 1m17s Details
2024-03-09 14:08:36 +02:00
Renovate 3a718caacf Update dependency mypy to v1.9.0
Tests / test (3.10) (pull_request) Successful in 1m20s Details
Tests / test (3.11) (pull_request) Successful in 1m37s Details
Tests / test (3.8) (pull_request) Successful in 1m49s Details
Tests / test (3.9) (pull_request) Successful in 1m18s Details
2024-03-08 18:26:10 +02:00
Renovate 06c4b9f845 Update dependency pytest-asyncio to v0.23.5.post1
Tests / test (3.10) (pull_request) Successful in 1m27s Details
Tests / test (3.11) (pull_request) Successful in 1m15s Details
Tests / test (3.8) (pull_request) Successful in 1m37s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-03-08 17:23:39 +02:00
Renovate 00a835442c Update dependency tox to v4.14.1
Tests / test (3.10) (pull_request) Successful in 1m23s Details
Tests / test (3.11) (pull_request) Successful in 1m15s Details
Tests / test (3.8) (pull_request) Successful in 1m17s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-03-06 21:50:35 +02:00
Renovate 4349dcf4d7 Update dependency tox to v4.14.0
Tests / test (3.10) (pull_request) Successful in 1m26s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m15s Details
2024-03-06 02:10:43 +02:00
Renovate c5c07bd75d Update dependency pytest to v8.1.0
Tests / test (3.10) (pull_request) Successful in 1m21s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m16s Details
Tests / test (3.9) (pull_request) Successful in 1m15s Details
2024-03-03 23:26:11 +02:00
Renovate 52f2630fda Update dependency py-cord to ~=2.5.0
Tests / test (3.10) (pull_request) Successful in 1m15s Details
Tests / test (3.11) (pull_request) Successful in 1m14s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-03-02 11:02:32 +02:00
Renovate 80e861800c Update dependency build to v1.1.1
Tests / test (3.10) (pull_request) Successful in 1m24s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m16s Details
Tests / test (3.9) (pull_request) Successful in 1m17s Details
2024-02-29 23:31:18 +02:00
Renovate 874892924f Update dependency build to v1.1.0
Tests / test (3.10) (pull_request) Successful in 1m29s Details
Tests / test (3.11) (pull_request) Successful in 1m20s Details
Tests / test (3.8) (pull_request) Successful in 1m17s Details
Tests / test (3.9) (pull_request) Successful in 1m19s Details
2024-02-29 19:19:45 +02:00
Renovate fd113f861b Update dependency pylint to v3.1.0
Tests / test (3.10) (pull_request) Successful in 1m31s Details
Tests / test (3.11) (pull_request) Successful in 1m19s Details
Tests / test (3.8) (pull_request) Successful in 1m17s Details
Tests / test (3.9) (pull_request) Successful in 1m17s Details
2024-02-25 19:04:33 +02:00
Renovate de7a9ef181 Update dependency pytest to v8.0.2
Tests / test (3.10) (pull_request) Successful in 1m42s Details
Tests / test (3.11) (pull_request) Successful in 1m22s Details
Tests / test (3.8) (pull_request) Successful in 1m22s Details
Tests / test (3.9) (pull_request) Successful in 1m27s Details
2024-02-25 01:11:12 +02:00
Renovate cde0393baf Update dependency pylint to v3.0.4
Tests / test (3.10) (pull_request) Successful in 1m31s Details
Tests / test (3.11) (pull_request) Successful in 1m15s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-02-23 23:53:57 +02:00
Profitroll 70073bf68e Merge pull request 'Update dependency black to v24.2.0' (#63) from renovate/black-24.x into dev
Reviewed-on: #63
2024-02-17 17:20:33 +02:00
Profitroll d4ad6609d6 Merge pull request 'Update dependency tox to v4.13.0' (#65) from renovate/tox-4.x into dev
Reviewed-on: #65
2024-02-17 17:20:09 +02:00
Renovate 1e6b2ccaca Update dependency tox to v4.13.0
Tests / test (3.10) (pull_request) Successful in 1m17s Details
Tests / test (3.11) (pull_request) Successful in 1m14s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-02-17 16:39:25 +02:00
Renovate abd4f035ad Update dependency black to v24.2.0
Tests / test (3.10) (pull_request) Successful in 1m23s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m15s Details
2024-02-17 16:39:21 +02:00
Renovate 0408cd676f Update dependency pytest-asyncio to v0.23.5
Tests / test (3.10) (pull_request) Successful in 1m24s Details
Tests / test (3.11) (pull_request) Successful in 1m15s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m15s Details
2024-02-17 15:35:45 +02:00
Renovate b1c61f0a5b Update dependency pytest to v8.0.1
Tests / test (3.10) (pull_request) Successful in 1m26s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m17s Details
Tests / test (3.9) (pull_request) Successful in 1m14s Details
2024-02-17 14:32:14 +02:00
Profitroll 6e7d3c5e6f Update requirements/pyrogram.txt 2024-02-17 14:30:20 +02:00
Renovate 458c2ef615 Update dependency pyrofork to ~=2.4.0
Tests / test (3.10) (pull_request) Successful in 1m43s Details
Tests / test (3.11) (pull_request) Successful in 1m25s Details
Tests / test (3.8) (pull_request) Successful in 1m19s Details
Tests / test (3.9) (pull_request) Successful in 1m21s Details
2024-02-06 21:01:19 +02:00
Renovate dc9c83dc68 Update dependency black to v24.1.1
Tests / test (3.10) (pull_request) Successful in 1m32s Details
Tests / test (3.11) (pull_request) Successful in 1m16s Details
Tests / test (3.8) (pull_request) Successful in 1m14s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-01-28 08:24:05 +02:00
Renovate 48d1d9291a Update dependency pytest to v8
Tests / test (3.10) (pull_request) Successful in 1m42s Details
Tests / test (3.11) (pull_request) Successful in 1m18s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m17s Details
2024-01-27 23:58:41 +02:00
Renovate 451b0c5135 Update dependency black to v24
Tests / test (3.10) (pull_request) Successful in 1m34s Details
Tests / test (3.11) (pull_request) Successful in 1m15s Details
Tests / test (3.8) (pull_request) Successful in 1m13s Details
Tests / test (3.9) (pull_request) Successful in 1m15s Details
2024-01-26 08:05:08 +02:00
Renovate f950eaa339 Update dependency tox to v4.12.1
Tests / test (3.10) (pull_request) Successful in 1m28s Details
Tests / test (3.11) (pull_request) Successful in 1m14s Details
Tests / test (3.8) (pull_request) Successful in 1m13s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-01-17 06:57:41 +02:00
Profitroll bd3c62fed8
Bump pyrofork to 2.3.16.post5 2024-01-15 22:40:45 +01:00
Profitroll 16658efb17
Bump pyrofork to 2.3.16.post4 2024-01-15 00:54:05 +01:00
Renovate eb0a43e360 Update dependency tox to v4.12.0
Tests / test (3.10) (pull_request) Successful in 1m26s Details
Tests / test (3.11) (pull_request) Successful in 1m15s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m15s Details
2024-01-12 04:32:16 +02:00
Renovate d3a423a560 Update dependency types-aiofiles to v23.2.0.20240106
Tests / test (3.10) (pull_request) Successful in 1m14s Details
Tests / test (3.11) (pull_request) Successful in 1m15s Details
Tests / test (3.8) (pull_request) Successful in 1m18s Details
Tests / test (3.9) (pull_request) Successful in 1m19s Details
2024-01-06 04:22:14 +02:00
Profitroll 20cc754a2a
Fixed wrong variable being used in PyroClient.start() 2024-01-03 23:56:34 +01:00
Profitroll fc14cad3ff
owner, scoped_commands and i18n_bot_info can be provided in Client's kwargs now 2024-01-03 23:16:26 +01:00
Profitroll 5ba763246b Merge pull request 'Update to 3.0.0' (#52) from dev into main
Tests / test (3.10) (push) Successful in 1m15s Details
Tests / test (3.11) (push) Successful in 1m14s Details
Tests / test (3.8) (push) Successful in 1m14s Details
Tests / test (3.9) (push) Successful in 1m22s Details
Reviewed-on: #52
2024-01-04 00:06:50 +02:00
Profitroll 327b161b41
Added a few JSON examples 2024-01-03 22:45:39 +01:00
Profitroll c756c6b1dc
Closes #33
Tests / test (3.10) (pull_request) Successful in 1m21s Details
Tests / test (3.11) (pull_request) Successful in 1m17s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m16s Details
2024-01-03 22:37:04 +01:00
Profitroll 9e9c90fce1
Pyrofork has replaced the vanilla Pyrogram (#51) 2024-01-03 22:35:46 +01:00
Renovate 91cc03f921 Update dependency pytest to v7.4.4
Tests / test (3.10) (pull_request) Successful in 1m28s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m14s Details
Tests / test (3.9) (pull_request) Successful in 1m13s Details
2024-01-01 18:09:34 +02:00
Renovate a0538625e2 Update dependency pytest-asyncio to v0.23.3
Tests / test (3.10) (pull_request) Successful in 1m13s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m15s Details
Tests / test (3.9) (pull_request) Successful in 1m13s Details
2024-01-01 17:06:07 +02:00
Profitroll f0ffdf096d Merge pull request 'Pycord support initial release' (#48) from dev into main
Tests / test (3.10) (push) Successful in 1m8s Details
Tests / test (3.11) (push) Successful in 1m5s Details
Tests / test (3.8) (push) Successful in 1m43s Details
Tests / test (3.9) (push) Successful in 1m3s Details
Reviewed-on: #48
2023-12-27 15:00:41 +02:00
Profitroll e7555d3de1
Bump version to 2.1.0
Tests / test (3.10) (pull_request) Successful in 1m8s Details
Tests / test (3.11) (pull_request) Successful in 1m3s Details
Tests / test (3.8) (pull_request) Successful in 1m4s Details
Tests / test (3.9) (pull_request) Successful in 1m8s Details
2023-12-27 13:46:10 +01:00
Profitroll 17f15aca5b
Initial Pycord addition 2023-12-27 13:45:40 +01:00
Renovate 73c3a1ff13 Update dependency black to v23.12.1
Tests / test (3.10) (pull_request) Successful in 1m10s Details
Tests / test (3.11) (pull_request) Successful in 1m6s Details
Tests / test (3.8) (pull_request) Successful in 1m8s Details
Tests / test (3.9) (pull_request) Successful in 1m10s Details
2023-12-23 01:39:45 +02:00
Renovate bfa3d4f6e9 Update dependency mypy to v1.8.0
Tests / test (3.10) (pull_request) Successful in 1m11s Details
Tests / test (3.11) (pull_request) Successful in 1m6s Details
Tests / test (3.8) (pull_request) Successful in 1m5s Details
Tests / test (3.9) (pull_request) Successful in 1m42s Details
2023-12-21 19:03:19 +02:00
Renovate 3d10cbcb2f Update dependency isort to v5.13.2
Tests / test (3.10) (pull_request) Successful in 1m15s Details
Tests / test (3.11) (pull_request) Successful in 1m11s Details
Tests / test (3.8) (pull_request) Successful in 1m5s Details
Tests / test (3.9) (pull_request) Successful in 1m7s Details
2023-12-13 23:11:44 +02:00
Renovate 88f77e8494 Update dependency black to v23.12.0
Tests / test (3.10) (pull_request) Successful in 1m5s Details
Tests / test (3.11) (pull_request) Successful in 1m4s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m3s Details
2023-12-12 08:44:33 +02:00
Renovate f5f62f20cc Update dependency types-ujson to v5.9.0.0
Tests / test (3.10) (pull_request) Successful in 1m5s Details
Tests / test (3.11) (pull_request) Successful in 1m4s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m4s Details
2023-12-12 04:27:38 +02:00
Renovate 45743bdb7e Update dependency pylint to v3.0.3
Tests / test (3.10) (pull_request) Successful in 1m6s Details
Tests / test (3.11) (pull_request) Successful in 1m9s Details
Tests / test (3.8) (pull_request) Successful in 1m2s Details
Tests / test (3.9) (pull_request) Successful in 1m2s Details
2023-12-11 23:04:59 +02:00
Renovate 8e1f746309 Update dependency isort to v5.13.1
Tests / test (3.10) (pull_request) Successful in 1m9s Details
Tests / test (3.11) (pull_request) Successful in 1m6s Details
Tests / test (3.8) (pull_request) Successful in 1m7s Details
Tests / test (3.9) (pull_request) Successful in 1m3s Details
2023-12-11 22:00:00 +02:00
Renovate c4df7c6106 Update dependency ujson to ~=5.9.0
Tests / test (3.10) (pull_request) Successful in 1m11s Details
Tests / test (3.11) (pull_request) Successful in 1m9s Details
Tests / test (3.8) (pull_request) Successful in 1m10s Details
Tests / test (3.9) (pull_request) Successful in 1m10s Details
2023-12-11 01:36:51 +02:00
Profitroll 5103333920
Renovate's main branch is now "dev"
Tests / test (3.10) (push) Successful in 1m9s Details
Tests / test (3.11) (push) Successful in 1m8s Details
Tests / test (3.8) (push) Successful in 1m6s Details
Tests / test (3.9) (push) Successful in 1m7s Details
2023-12-10 11:58:21 +01:00
Renovate df09a21aee Update dependency isort to v5.13.0
Tests / test (3.10) (pull_request) Successful in 1m14s Details
Tests / test (3.11) (pull_request) Successful in 1m9s Details
Tests / test (3.8) (pull_request) Successful in 1m8s Details
Tests / test (3.9) (pull_request) Successful in 1m7s Details
Tests / test (3.10) (push) Successful in 1m11s Details
Tests / test (3.11) (push) Successful in 1m10s Details
Tests / test (3.8) (push) Successful in 1m5s Details
Tests / test (3.9) (push) Successful in 1m8s Details
2023-12-09 16:05:30 +02:00
Renovate 1800ff4dc3 Update dependency pytest-asyncio to v0.23.2
Tests / test (3.10) (pull_request) Successful in 1m6s Details
Tests / test (3.11) (pull_request) Successful in 1m4s Details
Tests / test (3.8) (pull_request) Successful in 1m7s Details
Tests / test (3.9) (pull_request) Successful in 1m1s Details
Tests / test (3.10) (push) Successful in 1m4s Details
Tests / test (3.11) (push) Successful in 1m6s Details
Tests / test (3.8) (push) Successful in 1m0s Details
Tests / test (3.9) (push) Successful in 1m1s Details
2023-12-04 10:14:13 +02:00
Renovate 9557b1759b Update dependency pytest-asyncio to v0.23.1
Tests / test (3.10) (pull_request) Successful in 1m6s Details
Tests / test (3.11) (pull_request) Successful in 1m16s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m51s Details
Tests / test (3.10) (push) Successful in 1m4s Details
Tests / test (3.11) (push) Successful in 1m6s Details
Tests / test (3.8) (push) Successful in 1m1s Details
Tests / test (3.9) (push) Successful in 1m2s Details
2023-12-03 21:28:30 +02:00
Renovate a650039bc9 Update dependency tox to v4.11.4
Tests / test (3.10) (pull_request) Successful in 1m5s Details
Tests / test (3.11) (pull_request) Successful in 1m4s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m3s Details
Tests / test (3.10) (push) Successful in 1m6s Details
Tests / test (3.11) (push) Successful in 1m5s Details
Tests / test (3.8) (push) Successful in 1m3s Details
Tests / test (3.9) (push) Successful in 1m2s Details
2023-11-28 07:18:04 +02:00
Renovate a6a1f1cacc Update dependency mypy to v1.7.1
Tests / test (3.10) (pull_request) Successful in 1m8s Details
Tests / test (3.11) (pull_request) Successful in 1m13s Details
Tests / test (3.8) (pull_request) Successful in 1m46s Details
Tests / test (3.9) (pull_request) Successful in 1m49s Details
Tests / test (3.10) (push) Successful in 3m17s Details
Tests / test (3.11) (push) Successful in 1m9s Details
Tests / test (3.8) (push) Successful in 3m4s Details
Tests / test (3.9) (push) Successful in 1m34s Details
2023-11-23 20:34:48 +02:00
Renovate c8d5a81a2c Update dependency mypy to v1.7.0
Tests / test (3.10) (pull_request) Successful in 1m7s Details
Tests / test (3.11) (pull_request) Successful in 1m5s Details
Tests / test (3.8) (pull_request) Successful in 1m2s Details
Tests / test (3.9) (pull_request) Successful in 1m12s Details
Tests / test (3.10) (push) Successful in 1m29s Details
Tests / test (3.11) (push) Successful in 1m9s Details
Tests / test (3.8) (push) Successful in 1m18s Details
Tests / test (3.9) (push) Successful in 1m19s Details
2023-11-10 17:25:50 +02:00
Renovate c23326cd10 Update dependency black to v23.11.0
Tests / test (3.10) (pull_request) Successful in 1m9s Details
Tests / test (3.11) (pull_request) Successful in 1m4s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m1s Details
Tests / test (3.10) (push) Successful in 1m3s Details
Tests / test (3.11) (push) Successful in 1m6s Details
Tests / test (3.8) (push) Successful in 1m0s Details
Tests / test (3.9) (push) Successful in 1m5s Details
2023-11-08 08:31:01 +02:00
Profitroll e55916501d Update dependency pytest-asyncio to v0.22.0 (#30)
Tests / test (3.10) (push) Successful in 1m2s Details
Tests / test (3.11) (push) Successful in 1m6s Details
Tests / test (3.8) (push) Successful in 1m1s Details
Tests / test (3.9) (push) Successful in 1m2s Details
2023-10-31 11:06:27 +02:00
Renovate 4acd61c5c9 Update dependency pytest-asyncio to v0.22.0
Tests / test (3.10) (pull_request) Successful in 1m10s Details
Tests / test (3.11) (pull_request) Successful in 1m3s Details
Tests / test (3.8) (pull_request) Successful in 1m0s Details
Tests / test (3.9) (pull_request) Successful in 1m2s Details
2023-10-31 10:19:49 +02:00
Profitroll ae28461f3b Experiment failed: caching disabled
Tests / test (3.10) (push) Successful in 1m19s Details
Tests / test (3.11) (push) Successful in 1m1s Details
Tests / test (3.8) (push) Successful in 1m3s Details
Tests / test (3.9) (push) Successful in 59s Details
2023-10-25 08:40:32 +03:00
Profitroll b0a5d10d90 EOL fixed
Tests / test (3.10) (push) Failing after 4m48s Details
Tests / test (3.8) (push) Has been cancelled Details
Tests / test (3.9) (push) Has been cancelled Details
Tests / test (3.11) (push) Has been cancelled Details
2023-10-25 08:35:28 +03:00
Profitroll 9784c10d13 Added caching for requirements/*.txt 2023-10-25 08:35:04 +03:00
Profitroll b776b95047 Experiment: dependency caching
Tests / test (3.10) (push) Successful in 1m3s Details
Tests / test (3.11) (push) Successful in 1m2s Details
Tests / test (3.8) (push) Successful in 1m0s Details
Tests / test (3.9) (push) Successful in 1m0s Details
2023-10-25 08:30:08 +03:00
Renovate f8936321e1 Update dependency pytest to v7.4.3
Tests / test (3.10) (pull_request) Successful in 1m35s Details
Tests / test (3.11) (pull_request) Successful in 1m16s Details
Tests / test (3.8) (pull_request) Successful in 1m4s Details
Tests / test (3.9) (pull_request) Successful in 1m4s Details
Tests / test (3.10) (push) Successful in 1m9s Details
Tests / test (3.11) (push) Successful in 1m7s Details
Tests / test (3.8) (push) Successful in 1m1s Details
Tests / test (3.9) (push) Successful in 1m3s Details
2023-10-24 23:24:10 +03:00
Renovate cb7cfd1f03 Update dependency black to v23.10.1
Tests / test (3.10) (pull_request) Successful in 1m13s Details
Tests / test (3.11) (pull_request) Successful in 1m4s Details
Tests / test (3.8) (pull_request) Successful in 1m19s Details
Tests / test (3.9) (pull_request) Successful in 1m1s Details
Tests / test (3.10) (push) Successful in 1m14s Details
Tests / test (3.11) (push) Successful in 1m10s Details
Tests / test (3.8) (push) Successful in 1m2s Details
Tests / test (3.9) (push) Successful in 1m6s Details
2023-10-23 23:04:18 +03:00
Renovate 563069926d Update dependency pylint to v3.0.2
Tests / test (3.10) (pull_request) Successful in 1m12s Details
Tests / test (3.11) (pull_request) Successful in 1m8s Details
Tests / test (3.8) (pull_request) Successful in 1m4s Details
Tests / test (3.9) (pull_request) Successful in 1m7s Details
Tests / test (3.10) (push) Successful in 1m9s Details
Tests / test (3.11) (push) Successful in 1m7s Details
Tests / test (3.8) (push) Successful in 1m3s Details
Tests / test (3.9) (push) Successful in 1m4s Details
2023-10-22 17:45:43 +03:00
Renovate ec95e89c5e Update dependency mypy to v1.6.1
Tests / test (3.10) (pull_request) Successful in 1m8s Details
Tests / test (3.11) (pull_request) Successful in 1m5s Details
Tests / test (3.8) (pull_request) Successful in 1m3s Details
Tests / test (3.9) (pull_request) Successful in 1m4s Details
Tests / test (3.10) (push) Successful in 1m6s Details
Tests / test (3.11) (push) Successful in 1m9s Details
Tests / test (3.8) (push) Successful in 1m2s Details
Tests / test (3.9) (push) Successful in 1m6s Details
2023-10-18 08:51:17 +03:00
Renovate a02452c1ee Update dependency black to v23.10.0
Tests / test (3.10) (pull_request) Successful in 1m11s Details
Tests / test (3.11) (pull_request) Successful in 1m4s Details
Tests / test (3.8) (pull_request) Successful in 1m4s Details
Tests / test (3.9) (pull_request) Successful in 1m5s Details
Tests / test (3.10) (push) Successful in 1m8s Details
Tests / test (3.11) (push) Successful in 1m6s Details
Tests / test (3.8) (push) Successful in 1m3s Details
Tests / test (3.9) (push) Successful in 1m5s Details
2023-10-17 19:17:13 +03:00
Renovate bf3bcab8a2 Update dependency mypy to v1.6.0
Tests / test (3.10) (pull_request) Successful in 1m11s Details
Tests / test (3.11) (pull_request) Successful in 1m3s Details
Tests / test (3.8) (pull_request) Successful in 1m6s Details
Tests / test (3.9) (pull_request) Successful in 1m5s Details
Tests / test (3.10) (push) Successful in 1m31s Details
Tests / test (3.11) (push) Successful in 1m3s Details
Tests / test (3.8) (push) Successful in 1m29s Details
Tests / test (3.9) (push) Successful in 1m5s Details
2023-10-10 20:44:54 +03:00
Renovate e8ea7accfa Update dependency pylint to v3.0.1
Tests / test (3.10) (pull_request) Successful in 1m14s Details
Tests / test (3.11) (pull_request) Successful in 1m6s Details
Tests / test (3.8) (pull_request) Successful in 1m4s Details
Tests / test (3.9) (pull_request) Successful in 1m7s Details
Tests / test (3.10) (push) Successful in 1m8s Details
Tests / test (3.11) (push) Successful in 1m4s Details
Tests / test (3.8) (push) Successful in 1m2s Details
Tests / test (3.9) (push) Successful in 1m1s Details
2023-10-05 23:55:07 +03:00
Renovate 87c35a69d4 Update dependency pylint to v3
Tests / test (3.10) (pull_request) Successful in 1m10s Details
Tests / test (3.11) (pull_request) Successful in 2m8s Details
Tests / test (3.8) (pull_request) Successful in 1m48s Details
Tests / test (3.9) (pull_request) Successful in 1m19s Details
Tests / test (3.10) (push) Successful in 1m50s Details
Tests / test (3.11) (push) Successful in 2m7s Details
Tests / test (3.8) (push) Successful in 1m26s Details
Tests / test (3.9) (push) Successful in 1m17s Details
2023-10-02 20:32:53 +03:00
Renovate 083a91f20c Update dependency pylint to v2.17.7
Tests / test (3.10) (pull_request) Successful in 1m8s Details
Tests / test (3.11) (pull_request) Successful in 1m2s Details
Tests / test (3.8) (pull_request) Successful in 1m5s Details
Tests / test (3.9) (pull_request) Successful in 1m5s Details
Tests / test (3.10) (push) Successful in 1m6s Details
Tests / test (3.11) (push) Successful in 1m3s Details
Tests / test (3.8) (push) Successful in 1m3s Details
Tests / test (3.9) (push) Successful in 1m4s Details
2023-10-01 01:11:50 +03:00
Renovate 84fe3382ef Update dependency pylint to v2.17.6
Tests / test (3.10) (pull_request) Successful in 1m9s Details
Tests / test (3.11) (pull_request) Successful in 1m3s Details
Tests / test (3.8) (pull_request) Successful in 1m28s Details
Tests / test (3.9) (pull_request) Successful in 1m14s Details
Tests / test (3.10) (push) Successful in 1m28s Details
Tests / test (3.11) (push) Successful in 1m4s Details
Tests / test (3.8) (push) Successful in 1m5s Details
Tests / test (3.9) (push) Successful in 1m9s Details
2023-09-25 15:03:19 +03:00
Renovate 6baca46a9c Update dependency black to v23.9.1
Tests / test (3.10) (pull_request) Successful in 1m8s Details
Tests / test (3.11) (pull_request) Successful in 1m3s Details
Tests / test (3.8) (pull_request) Successful in 1m2s Details
Tests / test (3.9) (pull_request) Successful in 1m2s Details
Tests / test (3.10) (push) Successful in 1m3s Details
Tests / test (3.11) (push) Successful in 1m1s Details
Tests / test (3.8) (push) Successful in 1m1s Details
Tests / test (3.9) (push) Successful in 1m3s Details
2023-09-11 04:39:59 +03:00
Renovate 0e3bf42c55 Update dependency black to v23.9.0
Tests / test (3.10) (pull_request) Successful in 1m5s Details
Tests / test (3.11) (pull_request) Successful in 1m2s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m3s Details
Tests / test (3.10) (push) Successful in 1m5s Details
Tests / test (3.11) (push) Successful in 1m3s Details
Tests / test (3.8) (push) Successful in 1m2s Details
Tests / test (3.9) (push) Successful in 1m2s Details
2023-09-09 07:20:09 +03:00
Renovate 0f5c3c5ed1 Update dependency tox to v4.11.3
Tests / test (3.10) (pull_request) Successful in 1m4s Details
Tests / test (3.11) (pull_request) Successful in 1m1s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m2s Details
Tests / test (3.10) (push) Successful in 1m3s Details
Tests / test (3.11) (push) Successful in 1m2s Details
Tests / test (3.8) (push) Successful in 1m2s Details
Tests / test (3.9) (push) Successful in 1m2s Details
2023-09-09 02:10:52 +03:00
Renovate f017082d16 Update dependency tox to v4.11.2
Tests / test (3.10) (pull_request) Successful in 1m4s Details
Tests / test (3.11) (pull_request) Successful in 1m1s Details
Tests / test (3.8) (pull_request) Successful in 1m3s Details
Tests / test (3.9) (pull_request) Successful in 1m5s Details
Tests / test (3.10) (push) Successful in 1m6s Details
Tests / test (3.11) (push) Successful in 1m7s Details
Tests / test (3.8) (push) Successful in 1m9s Details
Tests / test (3.9) (push) Successful in 1m2s Details
2023-09-08 07:37:08 +03:00
Renovate 015511f6ac Update dependency pytest to v7.4.2
Tests / test (3.10) (pull_request) Successful in 1m8s Details
Tests / test (3.11) (pull_request) Successful in 1m2s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m6s Details
Tests / test (3.10) (push) Successful in 1m9s Details
Tests / test (3.11) (push) Successful in 1m5s Details
Tests / test (3.8) (push) Successful in 1m6s Details
Tests / test (3.9) (push) Successful in 1m6s Details
2023-09-07 22:20:37 +03:00
Renovate e35e643108 Update dependency build to v1.0.3
Tests / test (3.10) (pull_request) Successful in 1m7s Details
Tests / test (3.11) (pull_request) Successful in 1m1s Details
Tests / test (3.8) (pull_request) Successful in 1m2s Details
Tests / test (3.9) (pull_request) Successful in 1m3s Details
Tests / test (3.10) (push) Successful in 1m5s Details
Tests / test (3.11) (push) Successful in 1m2s Details
Tests / test (3.8) (push) Successful in 1m3s Details
Tests / test (3.9) (push) Successful in 1m3s Details
2023-09-07 03:46:59 +03:00
Renovate c02f43ff07 Update dependency pytest to v7.4.1
Tests / test (3.10) (pull_request) Successful in 1m23s Details
Tests / test (3.11) (pull_request) Successful in 1m3s Details
Tests / test (3.8) (pull_request) Successful in 1m2s Details
Tests / test (3.9) (pull_request) Successful in 1m25s Details
Tests / test (3.10) (push) Successful in 1m7s Details
Tests / test (3.11) (push) Successful in 1m41s Details
Tests / test (3.8) (push) Successful in 1m7s Details
Tests / test (3.9) (push) Successful in 1m3s Details
2023-09-02 18:36:56 +03:00
Renovate 5333d0be9f Update dependency build to v1
Tests / test (3.10) (pull_request) Successful in 1m22s Details
Tests / test (3.11) (pull_request) Successful in 1m3s Details
Tests / test (3.8) (pull_request) Successful in 1m9s Details
Tests / test (3.9) (pull_request) Successful in 1m4s Details
Tests / test (3.10) (push) Successful in 1m8s Details
Tests / test (3.11) (push) Successful in 1m11s Details
Tests / test (3.8) (push) Successful in 1m7s Details
Tests / test (3.9) (push) Successful in 1m4s Details
2023-09-02 00:05:01 +03:00
Renovate 29a6d7f739 Update dependency tox to v4.11.1
Tests / test (3.10) (pull_request) Successful in 1m9s Details
Tests / test (3.11) (pull_request) Successful in 1m3s Details
Tests / test (3.8) (pull_request) Successful in 1m26s Details
Tests / test (3.9) (pull_request) Successful in 1m10s Details
Tests / test (3.10) (push) Successful in 1m9s Details
Tests / test (3.11) (push) Successful in 1m7s Details
Tests / test (3.8) (push) Successful in 1m4s Details
Tests / test (3.9) (push) Successful in 1m3s Details
2023-09-01 23:02:51 +03:00
Renovate bb934e67ea Update dependency tox to v4.11.0
Tests / test (3.10) (pull_request) Successful in 2m51s Details
Tests / test (3.11) (pull_request) Successful in 1m47s Details
Tests / test (3.8) (pull_request) Successful in 1m3s Details
Tests / test (3.9) (pull_request) Successful in 1m8s Details
Tests / test (3.10) (push) Successful in 1m13s Details
Tests / test (3.11) (push) Successful in 1m5s Details
Tests / test (3.8) (push) Successful in 1m7s Details
Tests / test (3.9) (push) Successful in 1m6s Details
2023-08-29 23:12:31 +03:00
Renovate 7998d556f9 Update dependency tox to v4.10.0
Tests / test (3.10) (pull_request) Successful in 1m8s Details
Tests / test (3.11) (pull_request) Successful in 1m3s Details
Tests / test (3.8) (pull_request) Successful in 1m0s Details
Tests / test (3.9) (pull_request) Successful in 1m3s Details
Tests / test (3.10) (push) Successful in 1m5s Details
Tests / test (3.11) (push) Successful in 1m0s Details
Tests / test (3.8) (push) Successful in 59s Details
Tests / test (3.9) (push) Successful in 1m2s Details
2023-08-21 20:47:16 +03:00
Renovate 3d30ea3f46 Update dependency mypy to v1.5.1
Tests / test (3.10) (pull_request) Successful in 1m5s Details
Tests / test (3.11) (pull_request) Successful in 1m2s Details
Tests / test (3.8) (pull_request) Successful in 1m2s Details
Tests / test (3.9) (pull_request) Successful in 1m3s Details
Tests / test (3.10) (push) Successful in 1m4s Details
Tests / test (3.11) (push) Successful in 1m6s Details
Tests / test (3.8) (push) Successful in 1m3s Details
Tests / test (3.9) (push) Successful in 1m20s Details
2023-08-16 20:27:04 +03:00
Renovate 97eaedb14a Update dependency tox to v4.9.0
Tests / test (3.10) (pull_request) Successful in 1m5s Details
Tests / test (3.11) (pull_request) Successful in 1m0s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m6s Details
Tests / test (3.10) (push) Successful in 1m4s Details
Tests / test (3.11) (push) Successful in 1m1s Details
Tests / test (3.8) (push) Successful in 1m3s Details
Tests / test (3.9) (push) Successful in 1m2s Details
2023-08-16 18:23:05 +03:00
Profitroll 72eef216b5 Merge pull request 'Update dependency types-aiofiles to v23.2.0.0' (#6) from renovate/types-aiofiles-23.x into main
Tests / test (3.10) (push) Successful in 1m9s Details
Tests / test (3.11) (push) Successful in 1m8s Details
Tests / test (3.8) (push) Successful in 1m8s Details
Tests / test (3.9) (push) Successful in 1m3s Details
Reviewed-on: #6
2023-08-16 16:24:12 +03:00
Renovate 3c48a6b561 Update dependency types-aiofiles to v23.2.0.0
Tests / test (3.10) (pull_request) Successful in 1m4s Details
Tests / test (3.11) (pull_request) Successful in 1m5s Details
Tests / test (3.8) (pull_request) Successful in 1m0s Details
Tests / test (3.9) (pull_request) Successful in 1m1s Details
2023-08-16 16:19:23 +03:00
Renovate b0f6d43b8b Update dependency tox to v4.8.0
Tests / test (3.10) (pull_request) Successful in 1m11s Details
Tests / test (3.11) (pull_request) Successful in 1m11s Details
Tests / test (3.8) (pull_request) Successful in 1m2s Details
Tests / test (3.9) (pull_request) Successful in 1m10s Details
Tests / test (3.10) (push) Successful in 1m16s Details
Tests / test (3.11) (push) Successful in 1m5s Details
Tests / test (3.8) (push) Successful in 1m4s Details
Tests / test (3.9) (push) Successful in 1m7s Details
2023-08-12 22:09:00 +03:00
Profitroll 74db27487f
Added build to dev dependencies
Tests / test (3.10) (push) Successful in 1m8s Details
Tests / test (3.11) (push) Successful in 1m2s Details
Tests / test (3.8) (push) Successful in 1m5s Details
Tests / test (3.9) (push) Successful in 1m6s Details
2023-08-10 21:47:21 +02:00
Profitroll 95b58e85a9
Changed aiofiles version
Tests / test (3.10) (push) Successful in 1m25s Details
Tests / test (3.11) (push) Successful in 1m25s Details
Tests / test (3.8) (push) Successful in 1m1s Details
Tests / test (3.9) (push) Successful in 1m3s Details
2023-08-10 21:34:42 +02:00
Profitroll 83658af314 Merge pull request 'Update dependency mypy to v1.5.0' (#4) from renovate/mypy-1.x into main
Tests / test (3.10) (push) Successful in 1m5s Details
Tests / test (3.11) (push) Successful in 1m2s Details
Tests / test (3.8) (push) Successful in 1m1s Details
Tests / test (3.9) (push) Successful in 1m3s Details
Reviewed-on: #4
2023-08-10 17:18:04 +03:00
Renovate e9086c1582 Update dependency mypy to v1.5.0
Tests / test (3.10) (pull_request) Successful in 1m4s Details
Tests / test (3.11) (pull_request) Successful in 1m0s Details
Tests / test (3.8) (pull_request) Successful in 1m4s Details
Tests / test (3.9) (pull_request) Successful in 1m2s Details
2023-08-10 16:40:48 +03:00
Renovate fdd534ba41 Update dependency aiofiles to ~=23.2.0
Tests / test (3.10) (pull_request) Successful in 1m1s Details
Tests / test (3.11) (pull_request) Successful in 1m7s Details
Tests / test (3.8) (pull_request) Successful in 1m1s Details
Tests / test (3.9) (pull_request) Successful in 1m5s Details
Tests / test (3.10) (push) Successful in 1m3s Details
Tests / test (3.11) (push) Successful in 1m1s Details
Tests / test (3.8) (push) Successful in 59s Details
Tests / test (3.9) (push) Successful in 1m1s Details
2023-08-09 14:43:20 +03:00
Renovate 9d97f8d4b2 Update dependency tox to v4.7.0
Tests / test (3.10) (pull_request) Successful in 1m2s Details
Tests / test (3.11) (pull_request) Successful in 1m2s Details
Tests / test (3.8) (pull_request) Successful in 1m9s Details
Tests / test (3.9) (pull_request) Successful in 1m12s Details
Tests / test (3.10) (push) Successful in 1m5s Details
Tests / test (3.11) (push) Successful in 1m0s Details
Tests / test (3.8) (push) Successful in 1m0s Details
Tests / test (3.9) (push) Successful in 1m0s Details
2023-08-08 18:11:58 +03:00
Profitroll 0c06d2ed58
Fixed Renovate config
Tests / test (3.10) (push) Successful in 1m1s Details
Tests / test (3.11) (push) Successful in 1m1s Details
Tests / test (3.8) (push) Successful in 1m6s Details
Tests / test (3.9) (push) Successful in 1m1s Details
2023-08-08 10:28:56 +02:00
Profitroll 245c747991
Update Renovate rules
Tests / test (3.10) (push) Successful in 1m16s Details
Tests / test (3.11) (push) Successful in 1m4s Details
Tests / test (3.8) (push) Successful in 1m2s Details
Tests / test (3.9) (push) Successful in 1m9s Details
2023-08-07 12:16:56 +02:00
Profitroll 187187a8a2
Fixed tests workflow
Tests / test (3.10) (push) Successful in 1m0s Details
Tests / test (3.11) (push) Successful in 1m2s Details
Tests / test (3.8) (push) Successful in 1m1s Details
Tests / test (3.9) (push) Successful in 1m30s Details
2023-08-07 11:40:50 +02:00
Profitroll 8d27f43cce
Updated workflow 2023-08-07 11:24:48 +02:00
Profitroll f181552fb8
Updated to 2.0.0 2023-08-07 11:21:49 +02:00
Profitroll 32b1acf4aa
Updated to 0.2.2
Tests / test (3.10) (push) Successful in 1m4s Details
Tests / test (3.11) (push) Successful in 1m13s Details
Tests / test (3.8) (push) Successful in 1m9s Details
Tests / test (3.9) (push) Successful in 1m1s Details
2023-08-06 22:00:14 +02:00
Profitroll 1c1c71d40b
Fixed PyroClient.bot_locale 2023-08-06 21:59:48 +02:00
Profitroll 65838450ee
Fixed typing of Dict
Tests / test (3.10) (push) Successful in 1m9s Details
Tests / test (3.11) (push) Successful in 1m52s Details
Tests / test (3.8) (push) Successful in 1m23s Details
Tests / test (3.9) (push) Successful in 1m25s Details
2023-08-06 21:22:24 +02:00
Profitroll 3f39e07d04
Added coverage display 2023-08-06 21:21:55 +02:00
Profitroll c5fdd60d13
Added container
Tests / test (3.10) (push) Successful in 1m26s Details
Tests / test (3.11) (push) Successful in 1m1s Details
Tests / test (3.8) (push) Failing after 1m3s Details
Tests / test (3.9) (push) Successful in 1m11s Details
2023-08-06 21:11:06 +02:00
Profitroll 35fe69d2a8
Tried another Python versions set
Tests / test (3.11) (push) Has been cancelled Details
Tests / test (3.8) (push) Has been cancelled Details
Tests / test (3.9) (push) Has been cancelled Details
Tests / test (3.10) (push) Has been cancelled Details
2023-08-06 19:24:16 +02:00
Profitroll 3bb7ecca7e
Updated python versions
Tests / test (3.10.12) (push) Failing after 5s Details
Tests / test (3.11.3) (push) Failing after 5s Details
Tests / test (3.8.17) (push) Failing after 6s Details
Tests / test (3.9.17) (push) Failing after 4s Details
2023-08-06 19:14:44 +02:00
Profitroll 64aa2686ea
Updated to 0.2.1
Tests / test (3.10) (push) Failing after 55s Details
Tests / test (3.11) (push) Failing after 5s Details
Tests / test (3.8) (push) Failing after 6s Details
Tests / test (3.9) (push) Failing after 5s Details
2023-08-06 19:11:16 +02:00
Profitroll 461642a529
Added nested_set tests 2023-08-06 12:51:32 +02:00
Profitroll e5c0f5c1d1
Added i18n tests 2023-08-06 12:51:23 +02:00
Profitroll 00b1058014
BotLocale now has default_locale 2023-08-06 12:51:06 +02:00
Profitroll bc5be37ff1
locale is now Union[str, None] 2023-08-06 12:50:34 +02:00
Profitroll 7c756d7065
Switched versioning to semantic 2023-08-06 12:43:41 +02:00
Profitroll 3273b86b75
nested_set raises KeyError if not create_missing 2023-08-06 12:43:01 +02:00
Profitroll 783443e448
Changed imports 2023-08-06 12:42:37 +02:00
Profitroll 723cc40221
Fixed imports 2023-08-06 11:33:41 +02:00
Profitroll b6537a50ae
Changed path to tests/ 2023-08-06 02:08:02 +02:00
Profitroll e508f37089
Added pytest to pyproject 2023-08-06 02:07:07 +02:00
Profitroll d66bb9c93e
Locale of _() now defaults to "en" 2023-08-06 01:44:51 +02:00
Profitroll 253c85985b
Added some basic test 2023-08-06 01:25:32 +02:00
Profitroll 11d49fd476
Fixed escape_forward_slashes error 2023-08-06 01:25:08 +02:00
Profitroll dc107ebdb3
Updated to 1.9 2023-07-26 14:12:13 +02:00
Profitroll 33c33d08e2
Allowed passing kwargs 2023-07-26 14:12:05 +02:00
42 changed files with 935 additions and 81 deletions

View File

@ -0,0 +1,32 @@
name: Tests
on:
push:
branches:
- main
tags-ignore:
- v*
pull_request:
jobs:
test:
runs-on: ubuntu-latest
container: catthehacker/ubuntu:act-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
env:
AGENT_TOOLSDIRECTORY: /opt/hostedtoolcache
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install tox tox-gh-actions
- name: Test with tox
run: tox

View File

@ -3,6 +3,15 @@
"extends": [
"config:base"
],
"baseBranches": [
"dev"
],
"pip_requirements": {
"fileMatch": [
"requirements/.*\\.txt$"
],
"enabled": true
},
"packageRules": [
{
"matchUpdateTypes": [

21
examples/commands.json Normal file
View File

@ -0,0 +1,21 @@
{
"help": {
"scopes": [
{
"name": "BotCommandScopeDefault"
},
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
},
"shutdown": {
"scopes": [
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
}
}

38
examples/config.json Normal file
View File

@ -0,0 +1,38 @@
{
"locale": "en",
"bot": {
"owner": 0,
"api_id": 0,
"api_hash": "",
"bot_token": "",
"workers": 1,
"max_concurrent_transmissions": 1,
"scoped_commands": true
},
"reports": {
"chat_id": "owner"
},
"disabled_plugins": [],
"commands": {
"help": {
"scopes": [
{
"name": "BotCommandScopeDefault"
},
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
},
"shutdown": {
"scopes": [
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
}
}
}

23
examples/locale.json Normal file
View File

@ -0,0 +1,23 @@
{
"metadata": {
"flag": "🇬🇧",
"name": "English",
"codes": [
"en"
]
},
"bot": {
"name": "Your Bot",
"about": "I'm a your bot. Nice to meet you!",
"description": "I'm just your bot. Yet nice to meet you!"
},
"commands": {
"help": "Show help message"
},
"messages": {
"help": "Sample Text"
},
"callbacks": {
"sample": "This button is working!"
}
}

View File

@ -1,9 +0,0 @@
__name__ = "libbot"
__version__ = "1.8"
__license__ = "GPL3"
__author__ = "Profitroll"
from .__main__ import *
from . import sync
from . import i18n
from . import pyrogram

View File

@ -1,15 +1,15 @@
[build-system]
requires = ["setuptools>=62.6,<66"]
requires = ["setuptools>=62.6", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "libbot"
version = "1.8"
dynamic = ["version", "dependencies", "optional-dependencies"]
authors = [{ name = "Profitroll" }]
description = "Universal bot library with functions needed for basic Discord/Telegram bot development."
readme = "README.md"
requires-python = ">=3.8"
license = { text = "GPL3" }
license = { file = "LICENSE" }
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
@ -22,33 +22,46 @@ classifiers = [
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Utilities",
]
dependencies = ["aiofiles~=23.1.0"]
[project.optional-dependencies]
pycord = ["py-cord~=2.4.1"]
pyrogram = ["pyrogram~=2.0.106", "apscheduler~=3.10.1"]
speed = ["ujson~=5.8.0"]
[tool.setuptools.dynamic]
version = { attr = "libbot.__version__" }
dependencies = { file = "requirements/_.txt" }
[tool.setuptools.dynamic.optional-dependencies]
dev = { file = "requirements/dev.txt" }
pycord = { file = "requirements/pycord.txt" }
pyrogram = { file = "requirements/pyrogram.txt" }
speed = { file = "requirements/speed.txt" }
[project.urls]
Source = "https://git.end-play.xyz/profitroll/LibBotUniversal"
Documentation = "https://git.end-play.xyz/profitroll/LibBotUniversal/wiki"
Tracker = "https://git.end-play.xyz/profitroll/LibBotUniversal/issues"
[tool.setuptools]
packages = [
"libbot",
"libbot.sync",
"libbot.pyrogram",
"libbot.pyrogram.classes",
"libbot.i18n",
"libbot.i18n.sync",
"libbot.i18n.classes",
]
[tool.setuptools_scm]
[tool.setuptools.packages.find]
where = ["src"]
[tool.black]
target-version = ['py38', 'py39', 'py310', 'py311']
[tool.isort]
profile = "black"
[tool.pytest.ini_options]
minversion = "6.0"
python_files = ["test_*.py"]
pythonpath = "."
testpaths = ["tests"]
[tool.mypy]
namespace_packages = true
install_types = true
strict = true
show_error_codes = true
[tool.pylint.main]
extension-pkg-whitelist = ["ujson"]
py-version = 3.8
[tool.coverage.run]
source = ["libbot"]

1
requirements/_.txt Normal file
View File

@ -0,0 +1 @@
aiofiles>=23.0.0

11
requirements/dev.txt Normal file
View File

@ -0,0 +1,11 @@
black==24.4.2
build==1.2.1
isort==5.13.2
mypy==1.10.0
pylint==3.2.0
pytest-asyncio==0.23.6
pytest-cov==5.0.0
pytest==8.2.0
tox==4.15.0
types-aiofiles==23.2.0.20240403
types-ujson==5.9.0.0

2
requirements/pycord.txt Normal file
View File

@ -0,0 +1,2 @@
apscheduler~=3.10.4
py-cord~=2.5.0

View File

@ -0,0 +1,2 @@
apscheduler~=3.10.4
pyrofork~=2.3.21.post3

1
requirements/speed.txt Normal file
View File

@ -0,0 +1 @@
ujson~=5.10.0

View File

@ -1,3 +0,0 @@
[metadata]
description_file=README.md
license_files=LICENSE

View File

@ -1,4 +0,0 @@
from setuptools import setup
if __name__ == "__main__":
setup()

6
src/libbot/__init__.py Normal file
View File

@ -0,0 +1,6 @@
__version__ = "3.0.1"
__license__ = "GPL3"
__author__ = "Profitroll"
from . import i18n, pycord, pyrogram, sync
from .__main__ import *

View File

@ -35,6 +35,8 @@ async def json_write(data: Any, path: Union[str, Path]) -> None:
async with aiofiles.open(str(path), mode="w", encoding="utf-8") as f:
await f.write(
dumps(data, ensure_ascii=False, escape_forward_slashes=False, indent=4)
if hasattr(dumps, "escape_forward_slashes")
else dumps(data, ensure_ascii=False, indent=4)
)

View File

@ -2,14 +2,15 @@ from os import listdir
from pathlib import Path
from typing import Any, Dict, Union
from libbot import config_get, json_read, sync
import libbot
from libbot.i18n import sync
from libbot.i18n.classes.bot_locale import BotLocale
async def _(
key: str,
*args: str,
locale: str = sync.config_get("locale"),
locale: Union[str, None] = "en",
locales_root: Union[str, Path] = Path("locale"),
) -> Any:
"""Get value of locale string
@ -17,20 +18,20 @@ async def _(
### Args:
* key (`str`): The last key of the locale's keys path.
* *args (`list`): Path to key like: `dict[args][key]`.
* locale (`str`): Locale to looked up in. Defaults to config's `"locale"` value.
* locale (`Union[str, None]`): Locale to looked up in. Defaults to `"en"`.
* locales_root (`Union[str, Path]`, *optional*): Folder where locales are located. Defaults to `Path("locale")`.
### Returns:
* `Any`: Value of provided locale key. Is usually `str`, `dict` or `list`
"""
locale = sync.config_get("locale") if locale is None else locale
locale = libbot.sync.config_get("locale") if locale is None else locale
try:
this_dict = await json_read(Path(f"{locales_root}/{locale}.json"))
this_dict = await libbot.json_read(Path(f"{locales_root}/{locale}.json"))
except FileNotFoundError:
try:
this_dict = await json_read(
Path(f'{locales_root}/{await config_get("locale")}.json')
this_dict = await libbot.json_read(
Path(f'{locales_root}/{await libbot.config_get("locale")}.json')
)
except FileNotFoundError:
return f'⚠️ Locale in config is invalid: could not get "{key}" in {args} from locale "{locale}"'
@ -65,7 +66,7 @@ async def in_all_locales(
valid_locales = [".".join(entry.split(".")[:-1]) for entry in files_locales]
for lc in valid_locales:
try:
this_dict = await json_read(Path(f"{locales_root}/{lc}.json"))
this_dict = await libbot.json_read(Path(f"{locales_root}/{lc}.json"))
except FileNotFoundError:
continue
@ -101,7 +102,7 @@ async def in_every_locale(
valid_locales = [".".join(entry.split(".")[:-1]) for entry in files_locales]
for lc in valid_locales:
try:
this_dict = await json_read(Path(f"{locales_root}/{lc}.json"))
this_dict = await libbot.json_read(Path(f"{locales_root}/{lc}.json"))
except FileNotFoundError:
continue

View File

@ -10,6 +10,7 @@ class BotLocale:
def __init__(
self,
default_locale: Union[str, None] = "en",
locales_root: Union[str, Path] = Path("locale"),
) -> None:
if isinstance(locales_root, str):
@ -23,7 +24,9 @@ class BotLocale:
".".join(entry.split(".")[:-1]) for entry in files_locales
]
self.default: str = sync.config_get("locale")
self.default: str = (
sync.config_get("locale") if default_locale is None else default_locale
)
self.locales: dict = {}
for lc in valid_locales:

View File

@ -2,14 +2,13 @@ from os import listdir
from pathlib import Path
from typing import Any, Dict, Union
from libbot import sync
from libbot.sync import config_get, json_read
import libbot
def _(
key: str,
*args: str,
locale: str = sync.config_get("locale"),
locale: Union[str, None] = "en",
locales_root: Union[str, Path] = Path("locale"),
) -> Any:
"""Get value of locale string
@ -17,20 +16,22 @@ def _(
### Args:
* key (`str`): The last key of the locale's keys path.
* *args (`list`): Path to key like: `dict[args][key]`.
* locale (`str`): Locale to looked up in. Defaults to config's `"locale"` value.
* locale (`Union[str, None]`): Locale to looked up in. Defaults to `"en"`.
* locales_root (`Union[str, Path]`, *optional*): Folder where locales are located. Defaults to `Path("locale")`.
### Returns:
* `Any`: Value of provided locale key. Is usually `str`, `dict` or `list`
"""
if locale is None:
locale = sync.config_get("locale")
locale = libbot.sync.config_get("locale")
try:
this_dict = json_read(Path(f"{locales_root}/{locale}.json"))
this_dict = libbot.sync.json_read(Path(f"{locales_root}/{locale}.json"))
except FileNotFoundError:
try:
this_dict = json_read(Path(f'{locales_root}/{config_get("locale")}.json'))
this_dict = libbot.sync.json_read(
Path(f'{locales_root}/{libbot.sync.config_get("locale")}.json')
)
except FileNotFoundError:
return f'⚠️ Locale in config is invalid: could not get "{key}" in {args} from locale "{locale}"'
@ -64,7 +65,7 @@ def in_all_locales(
valid_locales = [".".join(entry.split(".")[:-1]) for entry in files_locales]
for lc in valid_locales:
try:
this_dict = json_read(Path(f"{locales_root}/{lc}.json"))
this_dict = libbot.sync.json_read(Path(f"{locales_root}/{lc}.json"))
except FileNotFoundError:
continue
@ -100,7 +101,7 @@ def in_every_locale(
valid_locales = [".".join(entry.split(".")[:-1]) for entry in files_locales]
for lc in valid_locales:
try:
this_dict = json_read(Path(f"{locales_root}/{lc}.json"))
this_dict = libbot.sync.json_read(Path(f"{locales_root}/{lc}.json"))
except FileNotFoundError:
continue

View File

@ -0,0 +1 @@
from .bot import PycordBot

View File

@ -0,0 +1,57 @@
import logging
from pathlib import Path
from typing import Any, Dict, Union
try:
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.schedulers.background import BackgroundScheduler
from discord import Bot
except ImportError as exc:
raise ImportError(
"You need to install libbot[pycord] in order to use this class."
) from exc
try:
from ujson import loads
except ImportError:
from json import loads
from libbot.i18n import BotLocale
from libbot.i18n.sync import _
logger = logging.getLogger(__name__)
class PycordBot(Bot):
def __init__(
self,
config: Union[Dict[str, Any], None] = None,
config_path: Union[str, Path] = Path("config.json"),
locales_root: Union[str, Path, None] = None,
scheduler: Union[AsyncIOScheduler, BackgroundScheduler, None] = None,
**kwargs,
):
if config is None:
with open(config_path, "r", encoding="utf-8") as f:
self.config: dict = loads(f.read())
else:
self.config = config
super().__init__(
debug_guilds=self.config["bot"]["debug_guilds"],
owner_ids=self.config["bot"]["owners"],
**kwargs,
)
self.bot_locale: BotLocale = BotLocale(
default_locale=self.config["locale"],
locales_root=(Path("locale") if locales_root is None else locales_root),
)
self.default_locale: str = self.bot_locale.default
self.locales: dict = self.bot_locale.locales
self._ = self.bot_locale._
self.in_all_locales = self.bot_locale.in_all_locales
self.in_every_locale = self.bot_locale.in_every_locale
self.scheduler: Union[AsyncIOScheduler, BackgroundScheduler, None] = scheduler

View File

@ -46,6 +46,7 @@ class PyroClient(Client):
def __init__(
self,
name: str = "bot_client",
owner: Union[int, None] = None,
config: Union[Dict[str, Any], None] = None,
config_path: Union[str, Path] = Path("config.json"),
api_id: Union[int, None] = None,
@ -58,7 +59,10 @@ class PyroClient(Client):
sleep_threshold: int = 120,
max_concurrent_transmissions: int = 1,
commands_source: Union[Dict[str, dict], None] = None,
scoped_commands: Union[bool, None] = None,
i18n_bot_info: bool = False,
scheduler: Union[AsyncIOScheduler, BackgroundScheduler, None] = None,
**kwargs,
):
if config is None:
with open(config_path, "r", encoding="utf-8") as f:
@ -90,17 +94,23 @@ class PyroClient(Client):
]
if "max_concurrent_transmissions" in self.config["bot"]
else max_concurrent_transmissions,
**kwargs,
)
self.owner: int = self.config["bot"]["owner"]
self.owner: int = self.config["bot"]["owner"] if owner is None else owner
self.commands: List[PyroCommand] = []
self.commands_source: Dict[str, dict] = (
self.config["commands"] if commands_source is None else commands_source
)
self.scoped_commands: bool = self.config["bot"]["scoped_commands"]
self.scoped_commands: bool = (
self.config["bot"]["scoped_commands"]
if scoped_commands is None
else scoped_commands
)
self.start_time: float = 0
self.bot_locale: BotLocale = BotLocale(
(Path("locale") if locales_root is None else locales_root)
default_locale=self.config["locale"],
locales_root=(Path("locale") if locales_root is None else locales_root),
)
self.default_locale: str = self.bot_locale.default
self.locales: dict = self.bot_locale.locales
@ -113,7 +123,9 @@ class PyroClient(Client):
self.scopes_placeholders: Dict[str, int] = {"owner": self.owner}
async def start(self, register_commands: bool = True):
self.i18n_bot_info: bool = i18n_bot_info
async def start(self, register_commands: bool = True) -> None:
await super().start()
self.start_time = time()
@ -126,6 +138,55 @@ class PyroClient(Client):
getpid(),
)
if self.i18n_bot_info:
# Register default bot's info
try:
await self.set_bot_info(
name=self._("name", "bot"),
about=self._("about", "bot"),
description=self._("description", "bot"),
lang_code="",
)
logger.info(
"Bot's info for the default locale %s has been updated",
self.default_locale,
)
except KeyError:
logger.warning(
"Default locale %s has incorrect keys or values in bot section",
self.default_locale,
)
# Register bot's info for each available locale
for locale_code in self.locales:
locale = self.locales[locale_code]
if "metadata" not in locale or ("codes" not in locale["metadata"]):
logger.warning(
"Locale %s is missing metadata or metadata.codes key",
locale_code,
)
continue
for code in locale["metadata"]["codes"]:
try:
await self.set_bot_info(
name=locale["bot"]["name"],
about=locale["bot"]["about"],
description=locale["bot"]["description"],
lang_code=code,
)
logger.info(
"Bot's info for the locale %s has been updated",
self.code,
)
except KeyError:
logger.warning(
"Locale %s has incorrect keys or values in bot section",
locale_code,
)
# Send a message to the bot's reports chat about the startup
try:
await self.send_message(
chat_id=self.owner
@ -133,23 +194,24 @@ class PyroClient(Client):
else self.config["reports"]["chat_id"],
text=f"Bot started PID `{getpid()}`",
)
if self.scheduler is None:
return
if register_commands:
self.scheduler.add_job(
self.register_commands,
trigger="date",
run_date=datetime.now() + timedelta(seconds=5),
kwargs={"command_sets": await self.collect_commands()},
)
self.scheduler.start()
except BadRequest:
logger.warning("Unable to send message to report chat.")
async def stop(self, exit_completely: bool = True):
if self.scheduler is None:
return
# Schedule the task to register all commands
if register_commands:
self.scheduler.add_job(
self.register_commands,
trigger="date",
run_date=datetime.now() + timedelta(seconds=5),
kwargs={"command_sets": await self.collect_commands()},
)
self.scheduler.start()
async def stop(self, exit_completely: bool = True) -> None:
try:
await self.send_message(
chat_id=self.owner
@ -167,16 +229,16 @@ class PyroClient(Client):
if exit_completely:
try:
exit()
except SystemExit as exp:
except SystemExit as exc:
raise SystemExit(
"Bot has been shut down, this is not an application error!"
) from exp
) from exc
async def collect_commands(self) -> Union[List[CommandSet], None]:
"""Gather list of the bot's commands
### Returns:
* `List[CommandSet]`: List of the commands' sets
* `List[CommandSet]`: List of the commands' sets.
"""
command_sets = None
@ -267,7 +329,7 @@ class PyroClient(Client):
def add_command(
self,
command: str,
):
) -> None:
"""Add command to the bot's internal commands list
### Args:
@ -286,7 +348,7 @@ class PyroClient(Client):
async def register_commands(
self, command_sets: Union[List[CommandSet], None] = None
):
) -> None:
"""Register commands stored in bot's 'commands' attribute"""
if command_sets is None:
@ -315,7 +377,9 @@ class PyroClient(Client):
language_code=command_set.language_code,
)
async def remove_commands(self, command_sets: Union[List[CommandSet], None] = None):
async def remove_commands(
self, command_sets: Union[List[CommandSet], None] = None
) -> None:
"""Remove commands stored in bot's 'commands' attribute"""
if command_sets is None:

View File

@ -29,7 +29,11 @@ def json_write(data: Any, path: Union[str, Path]) -> None:
* path (`Union[str, Path]`): Path-like object or path as a string of a destination
"""
with open(str(path), mode="w", encoding="utf-8") as f:
f.write(dumps(data, ensure_ascii=False, escape_forward_slashes=False, indent=4))
f.write(
dumps(data, ensure_ascii=False, escape_forward_slashes=False, indent=4)
if hasattr(dumps, "escape_forward_slashes")
else dumps(data, ensure_ascii=False, indent=4)
)
def nested_set(target: dict, value: Any, *path: str, create_missing=True) -> dict:
@ -51,7 +55,9 @@ def nested_set(target: dict, value: Any, *path: str, create_missing=True) -> dic
elif create_missing:
d = d.setdefault(key, {})
else:
return target
raise KeyError(
f"Key '{key}' is not found under path provided ({path}) and create_missing is False"
)
if path[-1] in d or create_missing:
d[path[-1]] = value
return target

6
tests/config.json Normal file
View File

@ -0,0 +1,6 @@
{
"locale": "en",
"bot": {
"bot_token": "sample_token"
}
}

20
tests/conftest.py Normal file
View File

@ -0,0 +1,20 @@
from pathlib import Path
import pytest
from libbot.i18n import BotLocale
@pytest.fixture()
def location_config() -> Path:
return Path("tests/config.json")
@pytest.fixture()
def location_locale() -> Path:
return Path("tests/data/locale/")
@pytest.fixture()
def bot_locale(location_locale: Path) -> BotLocale:
return BotLocale(locales_root=location_locale)

1
tests/data/empty.json Normal file
View File

@ -0,0 +1 @@
{}

3
tests/data/invalid.json Normal file
View File

@ -0,0 +1,3 @@
{
"foo": 'bar'
}

23
tests/data/locale/en.json Normal file
View File

@ -0,0 +1,23 @@
{
"metadata": {
"flag": "🇬🇧",
"name": "English",
"codes": [
"en"
]
},
"bot": {
"name": "",
"about": "",
"description": ""
},
"foo": "bar",
"messages": {
"example": "okay"
},
"callbacks": {
"default": {
"nested": "sure"
}
}
}

23
tests/data/locale/uk.json Normal file
View File

@ -0,0 +1,23 @@
{
"metadata": {
"flag": "🇺🇦",
"name": "Українська",
"codes": [
"uk"
]
},
"bot": {
"name": "",
"about": "",
"description": ""
},
"foo": "бар",
"messages": {
"example": "окей"
},
"callbacks": {
"default": {
"nested": "авжеж"
}
}
}

15
tests/data/test.json Normal file
View File

@ -0,0 +1,15 @@
{
"foo": "bar",
"abcdefg": [
"higklmnop",
{
"lol": {
"kek": [
1.0000035,
0.2542,
1337
]
}
}
]
}

59
tests/test_bot_locale.py Normal file
View File

@ -0,0 +1,59 @@
from pathlib import Path
from typing import Any, List, Union
import pytest
from libbot.i18n import BotLocale
@pytest.mark.parametrize(
"key, args, locale, expected",
[
("foo", [], None, "bar"),
("foo", [], "uk", "бар"),
("example", ["messages"], None, "okay"),
("example", ["messages"], "uk", "окей"),
("nested", ["callbacks", "default"], None, "sure"),
("nested", ["callbacks", "default"], "uk", "авжеж"),
],
)
def test_bot_locale_get(
key: str,
args: List[str],
locale: Union[str, None],
expected: Any,
bot_locale: BotLocale,
):
assert (
bot_locale._(key, *args, locale=locale)
if locale is not None
else bot_locale._(key, *args)
) == expected
@pytest.mark.parametrize(
"key, args, expected",
[
("foo", [], ["bar", "бар"]),
("example", ["messages"], ["okay", "окей"]),
("nested", ["callbacks", "default"], ["sure", "авжеж"]),
],
)
def test_i18n_in_all_locales(
key: str, args: List[str], expected: Any, bot_locale: BotLocale
):
assert (bot_locale.in_all_locales(key, *args)) == expected
@pytest.mark.parametrize(
"key, args, expected",
[
("foo", [], {"en": "bar", "uk": "бар"}),
("example", ["messages"], {"en": "okay", "uk": "окей"}),
("nested", ["callbacks", "default"], {"en": "sure", "uk": "авжеж"}),
],
)
def test_i18n_in_every_locale(
key: str, args: List[str], expected: Any, bot_locale: BotLocale
):
assert (bot_locale.in_every_locale(key, *args)) == expected

View File

@ -0,0 +1,48 @@
from pathlib import Path
from typing import Any, List
import pytest
from libbot import config_get, config_set
@pytest.mark.asyncio
@pytest.mark.parametrize(
"args, expected",
[
(["locale"], "en"),
(["bot_token", "bot"], "sample_token"),
],
)
async def test_config_get_valid(args: List[str], expected: str, location_config: Path):
assert await config_get(args[0], *args[1:], config_file=location_config) == expected
@pytest.mark.asyncio
@pytest.mark.parametrize(
"args, expected",
[
(["bot_stonks", "bot"], pytest.raises(KeyError)),
],
)
async def test_config_get_invalid(
args: List[str], expected: Any, location_config: Path
):
with expected:
assert (
await config_get(args[0], *args[1:], config_file=location_config)
== expected
)
@pytest.mark.asyncio
@pytest.mark.parametrize(
"key, path, value",
[
("locale", [], "en"),
("bot_token", ["bot"], "sample_token"),
],
)
async def test_config_set(key: str, path: List[str], value: Any, location_config: Path):
await config_set(key, value, *path, config_file=location_config)
assert await config_get(key, *path, config_file=location_config) == value

42
tests/test_config_sync.py Normal file
View File

@ -0,0 +1,42 @@
from pathlib import Path
from typing import Any, List
import pytest
from libbot import sync
@pytest.mark.parametrize(
"args, expected",
[
(["locale"], "en"),
(["bot_token", "bot"], "sample_token"),
],
)
def test_config_get_valid(args: List[str], expected: str, location_config: Path):
assert sync.config_get(args[0], *args[1:], config_file=location_config) == expected
@pytest.mark.parametrize(
"args, expected",
[
(["bot_stonks", "bot"], pytest.raises(KeyError)),
],
)
def test_config_get_invalid(args: List[str], expected: Any, location_config: Path):
with expected:
assert (
sync.config_get(args[0], *args[1:], config_file=location_config) == expected
)
@pytest.mark.parametrize(
"key, path, value",
[
("locale", [], "en"),
("bot_token", ["bot"], "sample_token"),
],
)
def test_config_set(key: str, path: List[str], value: Any, location_config: Path):
sync.config_set(key, value, *path, config_file=location_config)
assert sync.config_get(key, *path, config_file=location_config) == value

66
tests/test_i18n_async.py Normal file
View File

@ -0,0 +1,66 @@
from pathlib import Path
from typing import Any, List, Union
import pytest
from libbot import i18n
@pytest.mark.asyncio
@pytest.mark.parametrize(
"key, args, locale, expected",
[
("foo", [], None, "bar"),
("foo", [], "uk", "бар"),
("example", ["messages"], None, "okay"),
("example", ["messages"], "uk", "окей"),
("nested", ["callbacks", "default"], None, "sure"),
("nested", ["callbacks", "default"], "uk", "авжеж"),
],
)
async def test_i18n_get(
key: str,
args: List[str],
locale: Union[str, None],
expected: Any,
location_locale: Path,
):
assert (
await i18n._(key, *args, locale=locale, locales_root=location_locale)
if locale is not None
else await i18n._(key, *args, locales_root=location_locale)
) == expected
@pytest.mark.asyncio
@pytest.mark.parametrize(
"key, args, expected",
[
("foo", [], ["bar", "бар"]),
("example", ["messages"], ["okay", "окей"]),
("nested", ["callbacks", "default"], ["sure", "авжеж"]),
],
)
async def test_i18n_in_all_locales(
key: str, args: List[str], expected: Any, location_locale: Path
):
assert (
await i18n.in_all_locales(key, *args, locales_root=location_locale)
) == expected
@pytest.mark.asyncio
@pytest.mark.parametrize(
"key, args, expected",
[
("foo", [], {"en": "bar", "uk": "бар"}),
("example", ["messages"], {"en": "okay", "uk": "окей"}),
("nested", ["callbacks", "default"], {"en": "sure", "uk": "авжеж"}),
],
)
async def test_i18n_in_every_locale(
key: str, args: List[str], expected: Any, location_locale: Path
):
assert (
await i18n.in_every_locale(key, *args, locales_root=location_locale)
) == expected

59
tests/test_i18n_sync.py Normal file
View File

@ -0,0 +1,59 @@
from pathlib import Path
from typing import Any, List, Union
import pytest
from libbot.i18n import sync
@pytest.mark.parametrize(
"key, args, locale, expected",
[
("foo", [], None, "bar"),
("foo", [], "uk", "бар"),
("example", ["messages"], None, "okay"),
("example", ["messages"], "uk", "окей"),
("nested", ["callbacks", "default"], None, "sure"),
("nested", ["callbacks", "default"], "uk", "авжеж"),
],
)
def test_i18n_get(
key: str,
args: List[str],
locale: Union[str, None],
expected: Any,
location_locale: Path,
):
assert (
sync._(key, *args, locale=locale, locales_root=location_locale)
if locale is not None
else sync._(key, *args, locales_root=location_locale)
) == expected
@pytest.mark.parametrize(
"key, args, expected",
[
("foo", [], ["bar", "бар"]),
("example", ["messages"], ["okay", "окей"]),
("nested", ["callbacks", "default"], ["sure", "авжеж"]),
],
)
def test_i18n_in_all_locales(
key: str, args: List[str], expected: Any, location_locale: Path
):
assert (sync.in_all_locales(key, *args, locales_root=location_locale)) == expected
@pytest.mark.parametrize(
"key, args, expected",
[
("foo", [], {"en": "bar", "uk": "бар"}),
("example", ["messages"], {"en": "okay", "uk": "окей"}),
("nested", ["callbacks", "default"], {"en": "sure", "uk": "авжеж"}),
],
)
def test_i18n_in_every_locale(
key: str, args: List[str], expected: Any, location_locale: Path
):
assert (sync.in_every_locale(key, *args, locales_root=location_locale)) == expected

64
tests/test_json_async.py Normal file
View File

@ -0,0 +1,64 @@
try:
from ujson import JSONDecodeError, dumps
except ImportError:
from json import dumps, JSONDecodeError
from pathlib import Path
from typing import Any, Union
import pytest
from libbot import json_read, json_write
@pytest.mark.asyncio
@pytest.mark.parametrize(
"path, expected",
[
(
"tests/data/test.json",
{
"foo": "bar",
"abcdefg": ["higklmnop", {"lol": {"kek": [1.0000035, 0.2542, 1337]}}],
},
),
("tests/data/empty.json", {}),
],
)
async def test_json_read_valid(path: Union[str, Path], expected: Any):
assert await json_read(path) == expected
@pytest.mark.asyncio
@pytest.mark.parametrize(
"path, expected",
[
("tests/data/invalid.json", JSONDecodeError),
("tests/data/nonexistent.json", FileNotFoundError),
],
)
async def test_json_read_invalid(path: Union[str, Path], expected: Any):
with pytest.raises(expected):
await json_read(path)
@pytest.mark.asyncio
@pytest.mark.parametrize(
"data, path",
[
(
{
"foo": "bar",
"abcdefg": ["higklmnop", {"lol": {"kek": [1.0000035, 0.2542, 1337]}}],
},
"tests/data/test.json",
),
({}, "tests/data/empty.json"),
],
)
async def test_json_write(data: Any, path: Union[str, Path]):
await json_write(data, path)
assert Path(path).is_file()
with open(path, "r", encoding="utf-8") as f:
assert f.read() == dumps(data, ensure_ascii=False, indent=4)

61
tests/test_json_sync.py Normal file
View File

@ -0,0 +1,61 @@
try:
from ujson import JSONDecodeError, dumps
except ImportError:
from json import dumps, JSONDecodeError
from pathlib import Path
from typing import Any, Union
import pytest
from libbot import sync
@pytest.mark.parametrize(
"path, expected",
[
(
"tests/data/test.json",
{
"foo": "bar",
"abcdefg": ["higklmnop", {"lol": {"kek": [1.0000035, 0.2542, 1337]}}],
},
),
("tests/data/empty.json", {}),
],
)
def test_json_read_valid(path: Union[str, Path], expected: Any):
assert sync.json_read(path) == expected
@pytest.mark.parametrize(
"path, expected",
[
("tests/data/invalid.json", JSONDecodeError),
("tests/data/nonexistent.json", FileNotFoundError),
],
)
def test_json_read_invalid(path: Union[str, Path], expected: Any):
with pytest.raises(expected):
assert sync.json_read(path) == expected
@pytest.mark.parametrize(
"data, path",
[
(
{
"foo": "bar",
"abcdefg": ["higklmnop", {"lol": {"kek": [1.0000035, 0.2542, 1337]}}],
},
"tests/data/test.json",
),
({}, "tests/data/empty.json"),
],
)
def test_json_write(data: Any, path: Union[str, Path]):
sync.json_write(data, path)
assert Path(path).is_file()
with open(path, "r", encoding="utf-8") as f:
assert f.read() == dumps(data, ensure_ascii=False, indent=4)

63
tests/test_nested_set.py Normal file
View File

@ -0,0 +1,63 @@
from typing import Any, Dict, List
import pytest
from libbot import sync
@pytest.mark.parametrize(
"target, value, path, create_missing, expected",
[
({"foo": "bar"}, "rab", ["foo"], True, {"foo": "rab"}),
({"foo": "bar"}, {"123": 456}, ["foo"], True, {"foo": {"123": 456}}),
(
{"foo": {"bar": {}}},
True,
["foo", "bar", "test"],
True,
{"foo": {"bar": {"test": True}}},
),
(
{"foo": {"bar": {}}},
True,
["foo", "bar", "test"],
False,
{"foo": {"bar": {}}},
),
],
)
def test_nested_set_valid(
target: Dict[str, Any],
value: Any,
path: List[str],
create_missing: bool,
expected: Any,
):
assert (
sync.nested_set(target, value, *path, create_missing=create_missing)
) == expected
@pytest.mark.parametrize(
"target, value, path, create_missing, expected",
[
(
{"foo": {"bar": {}}},
True,
["foo", "bar", "test1", "test2"],
False,
KeyError,
),
],
)
def test_nested_set_invalid(
target: Dict[str, Any],
value: Any,
path: List[str],
create_missing: bool,
expected: Any,
):
with pytest.raises(expected):
assert (
sync.nested_set(target, value, *path, create_missing=create_missing)
) == expected

23
tox.ini Normal file
View File

@ -0,0 +1,23 @@
[tox]
minversion = 3.8.0
envlist = py38, py39, py310, py311
isolated_build = true
[gh-actions]
python =
3.8: py38
3.9: py39
3.10: py310
3.11: py311
[testenv]
setenv =
PYTHONPATH = {toxinidir}
deps =
-r{toxinidir}/requirements/_.txt
-r{toxinidir}/requirements/dev.txt
-r{toxinidir}/requirements/pycord.txt
-r{toxinidir}/requirements/pyrogram.txt
-r{toxinidir}/requirements/speed.txt
commands =
pytest --basetemp={envtmpdir} --cov=libbot