diff --git a/doc/locales/doc.pot b/doc/locales/doc.pot index 9b4be1c7..9f3cc6cf 100644 --- a/doc/locales/doc.pot +++ b/doc/locales/doc.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: canaille 0.0.56\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-12 22:02+0100\n" +"POT-Creation-Date: 2024-12-19 09:46+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,34 +37,34 @@ msgid "[0.0.57] - Unreleased" msgstr "" #: ../../CHANGES.rst:5 -#: ../../CHANGES.rst:34 -#: ../../CHANGES.rst:62 -#: ../../CHANGES.rst:81 -#: ../../CHANGES.rst:88 -#: ../../CHANGES.rst:107 -#: ../../CHANGES.rst:167 -#: ../../CHANGES.rst:193 -#: ../../CHANGES.rst:208 -#: ../../CHANGES.rst:257 -#: ../../CHANGES.rst:283 -#: ../../CHANGES.rst:302 -#: ../../CHANGES.rst:310 -#: ../../CHANGES.rst:319 -#: ../../CHANGES.rst:345 -#: ../../CHANGES.rst:380 -#: ../../CHANGES.rst:406 -#: ../../CHANGES.rst:455 -#: ../../CHANGES.rst:483 -#: ../../CHANGES.rst:513 -#: ../../CHANGES.rst:569 -#: ../../CHANGES.rst:602 -#: ../../CHANGES.rst:623 -#: ../../CHANGES.rst:633 -#: ../../CHANGES.rst:656 -#: ../../CHANGES.rst:723 -#: ../../CHANGES.rst:761 -#: ../../CHANGES.rst:778 -#: ../../CHANGES.rst:814 +#: ../../CHANGES.rst:37 +#: ../../CHANGES.rst:65 +#: ../../CHANGES.rst:84 +#: ../../CHANGES.rst:91 +#: ../../CHANGES.rst:110 +#: ../../CHANGES.rst:170 +#: ../../CHANGES.rst:196 +#: ../../CHANGES.rst:211 +#: ../../CHANGES.rst:260 +#: ../../CHANGES.rst:286 +#: ../../CHANGES.rst:305 +#: ../../CHANGES.rst:313 +#: ../../CHANGES.rst:322 +#: ../../CHANGES.rst:348 +#: ../../CHANGES.rst:383 +#: ../../CHANGES.rst:409 +#: ../../CHANGES.rst:458 +#: ../../CHANGES.rst:486 +#: ../../CHANGES.rst:516 +#: ../../CHANGES.rst:572 +#: ../../CHANGES.rst:605 +#: ../../CHANGES.rst:626 +#: ../../CHANGES.rst:636 +#: ../../CHANGES.rst:659 +#: ../../CHANGES.rst:726 +#: ../../CHANGES.rst:764 +#: ../../CHANGES.rst:781 +#: ../../CHANGES.rst:817 #: 91a8054efa234209906812cdd41bd586 #: 2e9453d4722144fd9ad7f53b28a7cb37 #: 2e9453d4722144fd9ad7f53b28a7cb37 @@ -98,60 +98,70 @@ msgid "Added" msgstr "" #: ../../CHANGES.rst:6 +#: 5b4f3aa107a74df3ba845920503dfdc5 +msgid "Intruder lockout :issue:`173`" +msgstr "" + +#: ../../CHANGES.rst:7 +#: efa1fc20329f42918fe6a530617cf102 +msgid ":attr:`~canaille.core.configuration.CoreSettings.ENABLE_INTRUDER_LOCKOUT` :issue:`173`" +msgstr "" + +#: ../../CHANGES.rst:9 #: cdab69b7537c452caa3eadb572993a40 msgid "Multi-factor authentication :issue:`47`" msgstr "" -#: ../../CHANGES.rst:7 +#: ../../CHANGES.rst:10 #: a90b270f7e144a4b81babbac96f5ff22 msgid ":attr:`~canaille.core.configuration.CoreSettings.OTP_METHOD` and :attr:`~canaille.core.configuration.CoreSettings.EMAIL_OTP` and :attr:`~canaille.core.configuration.CoreSettings.SMS_OTP` and :attr:`~canaille.core.configuration.CoreSettings.SMPP` :issue:`47`" msgstr "" -#: ../../CHANGES.rst:12 +#: ../../CHANGES.rst:15 #: 05060126fea740ef82fba8246132aa6e msgid "Password compromission check :issue:`179`" msgstr "" -#: ../../CHANGES.rst:13 +#: ../../CHANGES.rst:16 #: a90b270f7e144a4b81babbac96f5ff22 msgid ":attr:`~canaille.core.configuration.CoreSettings.ADMIN_EMAIL` and :attr:`~canaille.core.configuration.CoreSettings.ENABLE_PASSWORD_COMPROMISSION_CHECK` and :attr:`~canaille.core.configuration.CoreSettings.PASSWORD_COMPROMISSION_CHECK_API_URL` :issue:`179`" msgstr "" -#: ../../CHANGES.rst:17 +#: ../../CHANGES.rst:20 #: 2cfcbdba2e9541dbab610bc724a2683a msgid "Implement OIDC client_credentials flow. :issue:`207`" msgstr "" -#: ../../CHANGES.rst:18 +#: ../../CHANGES.rst:21 #: 1e36a8464f6045708cf07b39bcdfea1c msgid "Button in the client admin page to create client tokens." msgstr "" -#: ../../CHANGES.rst:19 +#: ../../CHANGES.rst:22 #: c69d8b01e4194d5b9268b84ab81849d6 msgid "Basic SCIM implementation. :issue:`116` :pr:`197`" msgstr "" -#: ../../CHANGES.rst:22 -#: ../../CHANGES.rst:42 -#: ../../CHANGES.rst:55 -#: ../../CHANGES.rst:67 -#: ../../CHANGES.rst:92 -#: ../../CHANGES.rst:100 -#: ../../CHANGES.rst:148 -#: ../../CHANGES.rst:174 -#: ../../CHANGES.rst:226 -#: ../../CHANGES.rst:263 -#: ../../CHANGES.rst:332 -#: ../../CHANGES.rst:350 -#: ../../CHANGES.rst:388 -#: ../../CHANGES.rst:427 -#: ../../CHANGES.rst:462 -#: ../../CHANGES.rst:505 -#: ../../CHANGES.rst:609 -#: ../../CHANGES.rst:663 -#: ../../CHANGES.rst:695 -#: ../../CHANGES.rst:709 +#: ../../CHANGES.rst:25 +#: ../../CHANGES.rst:45 +#: ../../CHANGES.rst:58 +#: ../../CHANGES.rst:70 +#: ../../CHANGES.rst:95 +#: ../../CHANGES.rst:103 +#: ../../CHANGES.rst:151 +#: ../../CHANGES.rst:177 +#: ../../CHANGES.rst:229 +#: ../../CHANGES.rst:266 +#: ../../CHANGES.rst:335 +#: ../../CHANGES.rst:353 +#: ../../CHANGES.rst:391 +#: ../../CHANGES.rst:430 +#: ../../CHANGES.rst:465 +#: ../../CHANGES.rst:508 +#: ../../CHANGES.rst:612 +#: ../../CHANGES.rst:666 +#: ../../CHANGES.rst:698 +#: ../../CHANGES.rst:712 #: 254357b217fe4a309d66a400497a104a #: 254357b217fe4a309d66a400497a104a #: 254357b217fe4a309d66a400497a104a @@ -175,64 +185,65 @@ msgstr "" msgid "Changed" msgstr "" -#: ../../CHANGES.rst:23 +#: ../../CHANGES.rst:26 #: bb196cd8528b48628628ab53c5288b49 msgid "PostgreSQL and MySQL extras does not rely on libraries that need to be compiled." msgstr "" -#: ../../CHANGES.rst:24 +#: ../../CHANGES.rst:27 #: c36865875c264bb4a34d614ea2be23cf msgid "``.env`` files are not loaded by default. The ``ENV_FILE`` env var must be passed so ``.env`` files are loaded." msgstr "" -#: ../../CHANGES.rst:27 +#: ../../CHANGES.rst:30 #: 045b041136be49de8d54674ad57fea87 msgid "[0.0.56] - 2024-11-07" msgstr "" -#: ../../CHANGES.rst:30 -#: ../../CHANGES.rst:72 -#: ../../CHANGES.rst:111 -#: ../../CHANGES.rst:119 -#: ../../CHANGES.rst:127 -#: ../../CHANGES.rst:134 -#: ../../CHANGES.rst:141 -#: ../../CHANGES.rst:155 -#: ../../CHANGES.rst:185 -#: ../../CHANGES.rst:198 -#: ../../CHANGES.rst:216 -#: ../../CHANGES.rst:235 -#: ../../CHANGES.rst:243 -#: ../../CHANGES.rst:269 -#: ../../CHANGES.rst:277 -#: ../../CHANGES.rst:297 -#: ../../CHANGES.rst:327 -#: ../../CHANGES.rst:359 -#: ../../CHANGES.rst:367 -#: ../../CHANGES.rst:393 -#: ../../CHANGES.rst:413 -#: ../../CHANGES.rst:437 -#: ../../CHANGES.rst:447 -#: ../../CHANGES.rst:468 -#: ../../CHANGES.rst:476 -#: ../../CHANGES.rst:499 -#: ../../CHANGES.rst:522 -#: ../../CHANGES.rst:534 -#: ../../CHANGES.rst:543 -#: ../../CHANGES.rst:552 -#: ../../CHANGES.rst:561 -#: ../../CHANGES.rst:581 -#: ../../CHANGES.rst:588 -#: ../../CHANGES.rst:638 -#: ../../CHANGES.rst:646 -#: ../../CHANGES.rst:671 -#: ../../CHANGES.rst:679 -#: ../../CHANGES.rst:687 -#: ../../CHANGES.rst:700 -#: ../../CHANGES.rst:714 -#: ../../CHANGES.rst:746 -#: ../../CHANGES.rst:769 -#: ../../CHANGES.rst:800 +#: ../../CHANGES.rst:33 +#: ../../CHANGES.rst:75 +#: ../../CHANGES.rst:114 +#: ../../CHANGES.rst:122 +#: ../../CHANGES.rst:130 +#: ../../CHANGES.rst:137 +#: ../../CHANGES.rst:144 +#: ../../CHANGES.rst:158 +#: ../../CHANGES.rst:188 +#: ../../CHANGES.rst:201 +#: ../../CHANGES.rst:219 +#: ../../CHANGES.rst:238 +#: ../../CHANGES.rst:246 +#: ../../CHANGES.rst:272 +#: ../../CHANGES.rst:280 +#: ../../CHANGES.rst:300 +#: ../../CHANGES.rst:330 +#: ../../CHANGES.rst:362 +#: ../../CHANGES.rst:370 +#: ../../CHANGES.rst:396 +#: ../../CHANGES.rst:416 +#: ../../CHANGES.rst:440 +#: ../../CHANGES.rst:450 +#: ../../CHANGES.rst:471 +#: ../../CHANGES.rst:479 +#: ../../CHANGES.rst:502 +#: ../../CHANGES.rst:525 +#: ../../CHANGES.rst:537 +#: ../../CHANGES.rst:546 +#: ../../CHANGES.rst:555 +#: ../../CHANGES.rst:564 +#: ../../CHANGES.rst:584 +#: ../../CHANGES.rst:591 +#: ../../CHANGES.rst:641 +#: ../../CHANGES.rst:649 +#: ../../CHANGES.rst:674 +#: ../../CHANGES.rst:682 +#: ../../CHANGES.rst:690 +#: ../../CHANGES.rst:703 +#: ../../CHANGES.rst:717 +#: ../../CHANGES.rst:749 +#: ../../CHANGES.rst:772 +#: ../../CHANGES.rst:803 +#: 13ee0de3f7db4046b8399917e8d52e0b #: 13ee0de3f7db4046b8399917e8d52e0b #: 13ee0de3f7db4046b8399917e8d52e0b #: 13ee0de3f7db4046b8399917e8d52e0b @@ -269,7 +280,6 @@ msgstr "" #: 13ee0de3f7db4046b8399917e8d52e0b #: 13ee0de3f7db4046b8399917e8d52e0b #: 13ee0de3f7db4046b8399917e8d52e0b -#: 839f52c15ed94f0ba4a9356f392f728b #: 13ee0de3f7db4046b8399917e8d52e0b #: 13ee0de3f7db4046b8399917e8d52e0b #: 13ee0de3f7db4046b8399917e8d52e0b @@ -279,1473 +289,1473 @@ msgstr "" msgid "Fixed" msgstr "" -#: ../../CHANGES.rst:31 +#: ../../CHANGES.rst:34 #: 10c707b06b884b168b2dd26bffd7bf76 msgid "With LDAP backend, updating another user groups could result in a permission lost for the editor. :issue:`202`" msgstr "" -#: ../../CHANGES.rst:35 +#: ../../CHANGES.rst:38 #: efa1fc20329f42918fe6a530617cf102 msgid ":attr:`~canaille.core.configuration.CoreSettings.MAX_PASSWORD_LENGTH` and :attr:`~canaille.core.configuration.CoreSettings.MIN_PASSWORD_LENGTH` configuration options :issue:`174`" msgstr "" -#: ../../CHANGES.rst:37 +#: ../../CHANGES.rst:40 #: cdab69b7537c452caa3eadb572993a40 msgid "Password strength visual indicator. :issue:`174`" msgstr "" -#: ../../CHANGES.rst:38 +#: ../../CHANGES.rst:41 #: 2ae6bad543d64621886630d3db7832e6 msgid "Security events logs. :issue:`177`" msgstr "" -#: ../../CHANGES.rst:39 +#: ../../CHANGES.rst:42 #: 40ab5f1ed3bc406fb662d0025e5b3212 msgid "Support for Python 3.13. :pr:`186`" msgstr "" -#: ../../CHANGES.rst:43 +#: ../../CHANGES.rst:46 #: c7940e351aac4939b964ccb80cebd616 msgid "Update to `HTMX` 2.0.3. :pr:`184`" msgstr "" -#: ../../CHANGES.rst:44 +#: ../../CHANGES.rst:47 #: dfc1569ae0ec412d86503a0695522fa5 msgid "Migrate the Python project management tool from poetry to uv. :pr:`187`" msgstr "" -#: ../../CHANGES.rst:45 +#: ../../CHANGES.rst:48 #: 40c97bec2553487fa62efc486d3ee444 msgid "The ``sql`` package extra is now split between ``sqlite``, ``postgresql`` and ``mysql``." msgstr "" -#: ../../CHANGES.rst:48 -#: ../../CHANGES.rst:398 -#: ../../CHANGES.rst:806 +#: ../../CHANGES.rst:51 +#: ../../CHANGES.rst:401 +#: ../../CHANGES.rst:809 #: bc1a20b5783a4fe38fa201438a8075e5 #: bc1a20b5783a4fe38fa201438a8075e5 #: bc1a20b5783a4fe38fa201438a8075e5 msgid "Removed" msgstr "" -#: ../../CHANGES.rst:49 +#: ../../CHANGES.rst:52 #: 3f97d00692d047dbbecb5c18a2d45b07 msgid "End support for Python 3.9. :pr:`179`" msgstr "" -#: ../../CHANGES.rst:52 +#: ../../CHANGES.rst:55 #: 4a57056601f148969254d2f049e0f460 msgid "[0.0.55] - 2024-08-30" msgstr "" -#: ../../CHANGES.rst:56 +#: ../../CHANGES.rst:59 #: a037ad5da20049ad82e9f9b0d766cfbb msgid "Use poetry-core build backend. :pr:`178`" msgstr "" -#: ../../CHANGES.rst:59 +#: ../../CHANGES.rst:62 #: d6bf96b8e5cc4a6f8e099b48c1951a6a msgid "[0.0.54] - 2024-07-25" msgstr "" -#: ../../CHANGES.rst:63 +#: ../../CHANGES.rst:66 #: 062bcc176aac499384187fcb06e2a00b msgid "Group member removal can be achieved from the group edition page. :issue:`192`" msgstr "" -#: ../../CHANGES.rst:64 +#: ../../CHANGES.rst:67 #: 8680469549c74d37a52b1c6252c74d57 msgid "Model management commands. :issue:`117` :issue:`54`" msgstr "" -#: ../../CHANGES.rst:68 +#: ../../CHANGES.rst:71 #: c19428c67d8f4d198d0ab97defe14fb3 msgid "Model `identifier_attributes` are fixed." msgstr "" -#: ../../CHANGES.rst:69 +#: ../../CHANGES.rst:72 #: 571f38b1484b43e2beed6f33eb675700 msgid "Bump to `HTMX` 1.9.12. :pr:`172`" msgstr "" -#: ../../CHANGES.rst:74 +#: ../../CHANGES.rst:77 #: 9e54da898699471194477836791f08a6 msgid "Dark theme colors for better readability." msgstr "" -#: ../../CHANGES.rst:75 +#: ../../CHANGES.rst:78 #: 4e0f2a8e03a447e59cb0a2b0e6d208f1 msgid "Crash for passwordless users at login when no SMTP server was configured." msgstr "" -#: ../../CHANGES.rst:78 +#: ../../CHANGES.rst:81 #: a9273241db7e4137bac5973b20e3ec5d msgid "[0.0.53] - 2024-04-22" msgstr "" -#: ../../CHANGES.rst:82 +#: ../../CHANGES.rst:85 #: 17fbf739a68a4e59b5cc6da8befa1c6f msgid "`env_prefix` `create_app`` variable can select the environment var prefix." msgstr "" -#: ../../CHANGES.rst:85 +#: ../../CHANGES.rst:88 #: 7bdc8f732053463b95353cdf5c994838 msgid "[0.0.52] - 2024-04-22" msgstr "" -#: ../../CHANGES.rst:89 +#: ../../CHANGES.rst:92 #: bc7d1037cdfd40a69044f465467f6834 msgid "`env_file` create_app variable can customize/disable the .env file." msgstr "" -#: ../../CHANGES.rst:93 +#: ../../CHANGES.rst:96 #: 9685a5e5a13147f093ac57e2039fe11b msgid "Locked users cannot be impersonated anymore." msgstr "" -#: ../../CHANGES.rst:94 +#: ../../CHANGES.rst:97 #: 1b83a24a97384c2faab67e915701e6b2 msgid "Minimum Python requirement is 3.9." msgstr "" -#: ../../CHANGES.rst:97 +#: ../../CHANGES.rst:100 #: e88f01e3f89f45f2a63b456f8e304d3d msgid "[0.0.51] - 2024-04-09" msgstr "" -#: ../../CHANGES.rst:101 +#: ../../CHANGES.rst:104 #: aae3d126989840578ec2b08058aad688 msgid "Display the menu bar on error pages." msgstr "" -#: ../../CHANGES.rst:104 +#: ../../CHANGES.rst:107 #: 22b11dc18595450fa5e7fe5f35824ebe msgid "[0.0.50] - 2024-04-09" msgstr "" -#: ../../CHANGES.rst:108 +#: ../../CHANGES.rst:111 #: fc1bc503759c4beb943e9dcbf0c4a9cf msgid "Sign in/out events are logged in. :issue:`177`" msgstr "" -#: ../../CHANGES.rst:112 +#: ../../CHANGES.rst:115 #: cfe0182123c94bcc9ee847739bd2e114 msgid "`HTMX` and `JAVASCRIPT` configuration settings." msgstr "" -#: ../../CHANGES.rst:113 +#: ../../CHANGES.rst:116 #: 3bc7c83763d34549bac91df86a22b3a0 msgid "Compatibility with old sessions IDs." msgstr "" -#: ../../CHANGES.rst:116 +#: ../../CHANGES.rst:119 #: cdee0bee34024d21bace2d77ff637ed9 msgid "[0.0.49] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:120 +#: ../../CHANGES.rst:123 #: f9c9585c305d47628adffcae287229d2 msgid "LDAP user group removal." msgstr "" -#: ../../CHANGES.rst:121 +#: ../../CHANGES.rst:124 #: c25c5c6a9cca4061be6502cae5e86ba2 msgid "Display an error message when trying to remove the last user from a group." msgstr "" -#: ../../CHANGES.rst:124 +#: ../../CHANGES.rst:127 #: 5e0c66b55801444497954839297b97eb msgid "[0.0.48] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:128 +#: ../../CHANGES.rst:131 #: bd9920a130844ee897863a6b649484e2 msgid "LDAP ``objectClass`` guessing exception." msgstr "" -#: ../../CHANGES.rst:131 +#: ../../CHANGES.rst:134 #: 93cf829932204311ba399ae713aff29f msgid "[0.0.47] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:135 +#: ../../CHANGES.rst:138 #: b7a5d3351a334b0592b12373e1c7afa6 msgid "Lazy permission loading exception." msgstr "" -#: ../../CHANGES.rst:138 +#: ../../CHANGES.rst:141 #: c6000ae4f0fc4d488ab180c3aa9eb144 msgid "[0.0.46] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:142 +#: ../../CHANGES.rst:145 #: db4476f22ad049f49833696323eb1b33 msgid "Saving an object with the LDAP backend keeps the ``objectClass`` un-managed by Canaille. :pr:`171`" msgstr "" -#: ../../CHANGES.rst:145 +#: ../../CHANGES.rst:148 #: d7117b0322b549ff87b73b8e4c839915 msgid "[0.0.45] - 2024-04-04" msgstr "" -#: ../../CHANGES.rst:149 +#: ../../CHANGES.rst:152 #: 9690ab893eef4290a52b1137f24b9be8 msgid "Internal indexation mechanism of ``MemoryModel``." msgstr "" -#: ../../CHANGES.rst:152 +#: ../../CHANGES.rst:155 #: be79650410904879b53da2c62ac092d5 msgid "[0.0.44] - 2024-03-29" msgstr "" -#: ../../CHANGES.rst:156 +#: ../../CHANGES.rst:159 #: 1c2533bc36b548c59361d7b3e304cce6 msgid "Fix the default LDAP ``USER_FILTER`` value." msgstr "" -#: ../../CHANGES.rst:157 +#: ../../CHANGES.rst:160 #: c429e79bd5aa46edb7b4cd1bd87c3ad8 msgid "Fix the OIDC feature detection." msgstr "" -#: ../../CHANGES.rst:160 +#: ../../CHANGES.rst:163 #: 51a43a574cc943b5912effdaa67f8690 msgid "[0.0.43] - 2024-03-29" msgstr "" -#: ../../CHANGES.rst:164 -#: ../../CHANGES.rst:423 +#: ../../CHANGES.rst:167 +#: ../../CHANGES.rst:426 #: 02e8eccba3b74e889a68c78dc51e0a24 #: 02e8eccba3b74e889a68c78dc51e0a24 msgid "Configuration files must be updated." msgstr "" -#: ../../CHANGES.rst:169 +#: ../../CHANGES.rst:172 #: a39fba5f25754fdc9f0f339142ff0320 msgid "Add ``created`` and ``last_modified`` datetime for all models." msgstr "" -#: ../../CHANGES.rst:170 +#: ../../CHANGES.rst:173 #: b1e37ddf62994798a70a23cff76ed4d6 msgid "Sitemap to the documentation. :pr:`169`" msgstr "" -#: ../../CHANGES.rst:171 +#: ../../CHANGES.rst:174 #: 54cf20bc59af4634af6b3f2d0e10c5e9 msgid "Configuration management with `pydantic-settings`. :issue:`138` :pr:`170`" msgstr "" -#: ../../CHANGES.rst:176 +#: ../../CHANGES.rst:179 #: 689b4f88ba4b43db8c8b1a7bff0aebe6 msgid "Use default Python logging configuration format. :issue:`188` :pr:`165`" msgstr "" -#: ../../CHANGES.rst:177 +#: ../../CHANGES.rst:180 #: 7d18c66450654e25a65749ea273b859d msgid "Bump to `HTMX` 1.99.11. :pr:`166`" msgstr "" -#: ../../CHANGES.rst:178 +#: ../../CHANGES.rst:181 #: 9d053f12577548bc8cff1add00376bae msgid "Use the standard tomllib Python module instead of `toml` starting from Python 3.11. :pr:`167`" msgstr "" -#: ../../CHANGES.rst:179 +#: ../../CHANGES.rst:182 #: fd8c1c0314b2465c9cacb4ba593eae77 msgid "Use shibuya as the documentation theme :pr:`168`" msgstr "" -#: ../../CHANGES.rst:182 +#: ../../CHANGES.rst:185 #: abc0b3ba739e4f99866d02027d8128d2 msgid "[0.0.42] - 2023-12-29" msgstr "" -#: ../../CHANGES.rst:187 +#: ../../CHANGES.rst:190 #: 74e8932123b744b2809d370b36980326 msgid "Avoid to fail on imports if ``cryptography`` is missing." msgstr "" -#: ../../CHANGES.rst:190 +#: ../../CHANGES.rst:193 #: 41f209b7a9054599b7b71d4fab3afe8f msgid "[0.0.41] - 2023-12-25" msgstr "" -#: ../../CHANGES.rst:195 +#: ../../CHANGES.rst:198 #: 77ff8fdeadf94e2f8696b2f5b9bd9349 msgid "OIDC support for the ``create`` value of the ``prompt`` parameter. :issue:`185` :pr:`164`" msgstr "" -#: ../../CHANGES.rst:200 +#: ../../CHANGES.rst:203 #: 8940d9836a9f46a09613c3646e1d55f8 msgid "Correctly set up :attr:`~canaille.oidc.basemodels.Client.audience` during OIDC dynamic registration." msgstr "" -#: ../../CHANGES.rst:201 +#: ../../CHANGES.rst:204 #: bb9a9230771445b6a7c93f042fb289ee msgid "``post_logout_redirect_uris`` was ignored during OIDC dynamic registration." msgstr "" -#: ../../CHANGES.rst:202 +#: ../../CHANGES.rst:205 #: b5d0341447ef443b969d2a48457442f2 msgid "Group field error prevented the registration form validation." msgstr "" -#: ../../CHANGES.rst:205 +#: ../../CHANGES.rst:208 #: 7bcad6150cbc4883817538eb23bed3bd msgid "[0.0.40] - 2023-12-22" msgstr "" -#: ../../CHANGES.rst:210 +#: ../../CHANGES.rst:213 #: aae4204166c443f99e04d84842dd6dd9 msgid "The ``THEME`` setting can be a relative path." msgstr "" -#: ../../CHANGES.rst:213 +#: ../../CHANGES.rst:216 #: 26224cfa5ee647a2b15239a78065f5f7 msgid "[0.0.39] - 2023-12-15" msgstr "" -#: ../../CHANGES.rst:218 +#: ../../CHANGES.rst:221 #: 14b2b67c379045d681ee712797f44328 msgid "Crash when no ACL were defined." msgstr "" -#: ../../CHANGES.rst:219 +#: ../../CHANGES.rst:222 #: 38649598ac954d29843b54b15343dd15 msgid "OIDC Userinfo endpoint is also available in POST." msgstr "" -#: ../../CHANGES.rst:220 +#: ../../CHANGES.rst:223 #: ed1da2958a1646fd82c70171a5c04317 msgid "Fix redirection after password reset. :issue:`159`" msgstr "" -#: ../../CHANGES.rst:223 +#: ../../CHANGES.rst:226 #: 8f2bc47f69554f539aa2836958029d59 msgid "[0.0.38] - 2023-12-15" msgstr "" -#: ../../CHANGES.rst:228 +#: ../../CHANGES.rst:231 #: 24f252671c9a4a3590e94e5e563e4d19 msgid "Convert all the `PNG` pictures in `Webp`. :pr:`162`" msgstr "" -#: ../../CHANGES.rst:229 +#: ../../CHANGES.rst:232 #: 8a1d423f79f749868c06a775e9c21bd2 msgid "Update to Flask 3. :issue:`161` :pr:`163`" msgstr "" -#: ../../CHANGES.rst:232 +#: ../../CHANGES.rst:235 #: 9d53638e5933499baafec12390f02e23 msgid "[0.0.37] - 2023-12-01" msgstr "" -#: ../../CHANGES.rst:237 +#: ../../CHANGES.rst:240 #: 5ed255dd094a4a3aae1b75edf54001ad msgid "Handle 4xx and 5xx error codes with HTMX. :issue:`171` :pr:`161`" msgstr "" -#: ../../CHANGES.rst:240 +#: ../../CHANGES.rst:243 #: 26d16685ada341a29bf6ee6e98997128 msgid "[0.0.36] - 2023-12-01" msgstr "" -#: ../../CHANGES.rst:245 +#: ../../CHANGES.rst:248 #: 2cfddfd6843e4cbfb1b645c84bc70322 msgid "Avoid crashing when LDAP groups references unexisting users." msgstr "" -#: ../../CHANGES.rst:246 +#: ../../CHANGES.rst:249 #: f5714a32e81841e29f2619f6ee5464e8 msgid "Password reset and initialization mails were only sent to the preferred user email address." msgstr "" -#: ../../CHANGES.rst:248 +#: ../../CHANGES.rst:251 #: 4e121ada1cc24b7b8051d085b0ce464b msgid "Password reset and initialization mails were not sent at all the user addresses if one email address could not be reached." msgstr "" -#: ../../CHANGES.rst:250 +#: ../../CHANGES.rst:253 #: c5fc8c86d3df4732b3a06f70dd89af18 msgid "Password comparison was too permissive on login." msgstr "" -#: ../../CHANGES.rst:251 +#: ../../CHANGES.rst:254 #: 36f936a6dd8c41c5bc833d928f347321 msgid "Encrypt passwords in the SQL backend." msgstr "" -#: ../../CHANGES.rst:254 +#: ../../CHANGES.rst:257 #: 76befacfb135435fbee6ee0fe07f40e5 msgid "[0.0.35] - 2023-11-25" msgstr "" -#: ../../CHANGES.rst:259 +#: ../../CHANGES.rst:262 #: 14d361d80e4c429f929b943d3321e895 msgid "Refresh token grant supports other client authentication methods. :pr:`157`" msgstr "" -#: ../../CHANGES.rst:260 +#: ../../CHANGES.rst:263 #: c52cda2685214bcab533db539acee007 msgid "Implement a SQLAlchemy backend. :issue:`30` :pr:`158`" msgstr "" -#: ../../CHANGES.rst:265 +#: ../../CHANGES.rst:268 #: 57670f55b7644a0888ab65cd2da2fd8c msgid "Model attributes cardinality is closer to SCIM model. :pr:`155`" msgstr "" -#: ../../CHANGES.rst:266 +#: ../../CHANGES.rst:269 #: f4ef25b7b38b42a48fb2a32c5cd8888f msgid "Bump to `HTMX` 1.9.9. :pr:`159`" msgstr "" -#: ../../CHANGES.rst:271 +#: ../../CHANGES.rst:274 #: 49b0b7da40204fdeaf40c5281235c2a6 msgid "Disable `HTMX` boosting during the OIDC dance. :pr:`160`" msgstr "" -#: ../../CHANGES.rst:274 +#: ../../CHANGES.rst:277 #: db372dee122e4b4fb18c2c99dd056ce2 msgid "[0.0.34] - 2023-10-02" msgstr "" -#: ../../CHANGES.rst:279 +#: ../../CHANGES.rst:282 #: a4b5211e96894c5d9d51b2630d6aea17 msgid "Canaille installations without account lockabilty could not delete users. :pr:`153`" msgstr "" -#: ../../CHANGES.rst:285 +#: ../../CHANGES.rst:288 #: 4f4ca04b08a04dcb8f6a2eb6605f0e13 msgid "If users register or authenticate during a OAuth Authorization phase, they get redirected back to that page afterwards. :issue:`168` :pr:`151`" msgstr "" -#: ../../CHANGES.rst:288 +#: ../../CHANGES.rst:291 #: 298ffe26093441918be8b38d13f0cc58 msgid "The `flask-babel` and `pytz` libraries are now part of the `front` packaging extras." msgstr "" -#: ../../CHANGES.rst:289 +#: ../../CHANGES.rst:292 #: ccb502180d634f11ad173619af1b68d8 msgid "Bump to `fomantic-ui` 2.9.3. :pr:`152`" msgstr "" -#: ../../CHANGES.rst:290 +#: ../../CHANGES.rst:293 #: 7413676f512d4473972484920ff5f060 msgid "Bump to `HTMX` 1.9.6. :pr:`154`" msgstr "" -#: ../../CHANGES.rst:291 +#: ../../CHANGES.rst:294 #: 7905327465c44c09b2a10854abe79960 msgid "Support for Python 3.12. :pr:`155`" msgstr "" -#: ../../CHANGES.rst:294 +#: ../../CHANGES.rst:297 #: 808e57e560f74a25b60029fbd6531d2e msgid "[0.0.33] - 2023-08-26" msgstr "" -#: ../../CHANGES.rst:299 +#: ../../CHANGES.rst:302 #: 1179dc27648248188fdecf5696fd5045 msgid "OIDC jwks endpoint do not return empty `kid` claim." msgstr "" -#: ../../CHANGES.rst:304 +#: ../../CHANGES.rst:307 #: b8b2caca239b4b609143ffd267522a16 msgid "Documentation details on the Canaille models." msgstr "" -#: ../../CHANGES.rst:307 +#: ../../CHANGES.rst:310 #: dd35ed0e27664b6b954e9b39881f14bc msgid "[0.0.32] - 2023-08-17" msgstr "" -#: ../../CHANGES.rst:312 +#: ../../CHANGES.rst:315 #: bdcae061315a4e92a6bc1a48475cb351 msgid "Additional inmemory backend. :issue:`30` :pr:`149`" msgstr "" -#: ../../CHANGES.rst:313 +#: ../../CHANGES.rst:316 #: c39cbed721254ce5ad9c250de1e7ea41 msgid "Installation extras. :issue:`167` :pr:`150`" msgstr "" -#: ../../CHANGES.rst:316 +#: ../../CHANGES.rst:319 #: 5311648e4c714ed29e89e9644167f963 msgid "[0.0.31] - 2023-08-15" msgstr "" -#: ../../CHANGES.rst:321 +#: ../../CHANGES.rst:324 #: a6a4b510a0ac4b4ebeb9160510f72d77 msgid "Configuration option to disable the forced usage of OIDC `nonce` parameter. :pr:`143`" msgstr "" -#: ../../CHANGES.rst:322 +#: ../../CHANGES.rst:325 #: 37eb24ef005e44da8ae0f4c48bda766c msgid "Validate phone numbers with a regex. :pr:`146`" msgstr "" -#: ../../CHANGES.rst:323 +#: ../../CHANGES.rst:326 #: 2be2120a0500430a8d854d1b8f19a0bf msgid "Email verification. :issue:`41` :pr:`147`" msgstr "" -#: ../../CHANGES.rst:324 +#: ../../CHANGES.rst:327 #: d3be95492ef348efa77976515d4ffca9 msgid "Account registration. :issue:`55` :pr:`133` :pr:`148`" msgstr "" -#: ../../CHANGES.rst:329 +#: ../../CHANGES.rst:332 #: 1a3da0153c2b451d99665d2b61c512f2 msgid "The `check` command uses the default configuration values." msgstr "" -#: ../../CHANGES.rst:334 +#: ../../CHANGES.rst:337 #: 15f35fa96af04e508b1a6448d866cb5f msgid "Modals do not need use Javascript at the moment. :issue:`158` :pr:`144`" msgstr "" -#: ../../CHANGES.rst:337 +#: ../../CHANGES.rst:340 #: add3188842de44b691dfbe3152546f7b msgid "[0.0.30] - 2023-07-06" msgstr "" -#: ../../CHANGES.rst:341 +#: ../../CHANGES.rst:344 #: b96e981450334eee84128d7dffb40d8f msgid "Configuration files must be updated. Check the new format with ``git diff 0.0.29 0.0.30 canaille/conf/config.sample.toml``" msgstr "" -#: ../../CHANGES.rst:347 +#: ../../CHANGES.rst:350 #: ab83051dda0b48d185846e49011f2429 msgid "Configuration option to disable Javascript. :pr:`141`" msgstr "" -#: ../../CHANGES.rst:352 +#: ../../CHANGES.rst:355 #: 85fb804c891f444c9de116e6e4771526 msgid "The configuration parameter ``USER_FILTER`` is parsed with Jinja." msgstr "" -#: ../../CHANGES.rst:353 +#: ../../CHANGES.rst:356 #: 42d91f7cf5a3438a8bcb0bd5c193f1ea msgid "Configuration use ``PRIVATE_KEY_FILE`` instead of ``PRIVATE_KEY`` and ``PUBLIC_KEY_FILE`` instead of ``PUBLIC_KEY``." msgstr "" -#: ../../CHANGES.rst:356 +#: ../../CHANGES.rst:359 #: 30736e0e4b854b46940e80c38023946a msgid "[0.0.29] - 2023-06-30" msgstr "" -#: ../../CHANGES.rst:361 +#: ../../CHANGES.rst:364 #: 89d319fb81e148cb8f82f4b1a5a5390c msgid "Disabled `HTMX` boosting on OIDC forms to avoid errors." msgstr "" -#: ../../CHANGES.rst:364 +#: ../../CHANGES.rst:367 #: 68d32ee84fa642dfbf358ef907193eb8 msgid "[0.0.28] - 2023-06-30" msgstr "" -#: ../../CHANGES.rst:369 +#: ../../CHANGES.rst:372 #: 5490daf53fd144c0b6b360e90bf5667b msgid "A template variable was misnamed." msgstr "" -#: ../../CHANGES.rst:372 +#: ../../CHANGES.rst:375 #: c65a251ed68a49beaff42740c12ce76a msgid "[0.0.27] - 2023-06-29" msgstr "" -#: ../../CHANGES.rst:376 +#: ../../CHANGES.rst:379 #: ccf84fb0d4cd47058c3849498bd92259 msgid "Configuration files must be updated. Check the new format with ``git diff 0.0.26 0.0.27 canaille/conf/config.sample.toml``" msgstr "" -#: ../../CHANGES.rst:382 +#: ../../CHANGES.rst:385 #: 0856562aad23492aa6efc7f6e4bf8f90 msgid "Configuration entries can be loaded from files if the entry key has a *_FILE* suffix and the entry value is the path to the file. :issue:`134` :pr:`134`" msgstr "" -#: ../../CHANGES.rst:384 +#: ../../CHANGES.rst:387 #: 24fa209262e04bcbb46c2ab7c881fbaa msgid "Field list support. :issue:`115` :pr:`136`" msgstr "" -#: ../../CHANGES.rst:385 +#: ../../CHANGES.rst:388 #: eaff808f9ce745c59a1b373ab0ef90ab msgid "Pages are boosted with `HTMX`. :issue:`144` :issue:`145` :pr:`137`" msgstr "" -#: ../../CHANGES.rst:390 +#: ../../CHANGES.rst:393 #: 8afcdb0ddd8f4e6c9941315ff1b06538 msgid "Bump to jquery 3.7.0. :pr:`138`" msgstr "" -#: ../../CHANGES.rst:395 +#: ../../CHANGES.rst:398 #: a6e1f4b8a72f4500ab437a86f6e98d06 msgid "Profile edition when the user RDN was not ``uid``. :issue:`148` :pr:`139`" msgstr "" -#: ../../CHANGES.rst:400 +#: ../../CHANGES.rst:403 #: cfcf7ee77bb84df1bcd780df223e9044 msgid "Stop support for Python 3.7. :pr:`131`" msgstr "" -#: ../../CHANGES.rst:403 +#: ../../CHANGES.rst:406 #: 42eab7328c604747ad6bde0067cb6603 msgid "[0.0.26] - 2023-06-03" msgstr "" -#: ../../CHANGES.rst:408 +#: ../../CHANGES.rst:411 #: b621a029c6ec420d8708f0ddd4b49c85 msgid "Implemented account expiration based on OpenLDAP ppolicy overlay. Needs OpenLDAP 2.5+. :issue:`13` :pr:`118`" msgstr "" -#: ../../CHANGES.rst:410 +#: ../../CHANGES.rst:413 #: 05f5b0808e74429b92bf61fa570014cf msgid "Timezone configuration entry. :issue:`137` :pr:`130`" msgstr "" -#: ../../CHANGES.rst:415 +#: ../../CHANGES.rst:418 #: d7e71d1ce6704911b7e5094538cc1084 msgid "Avoid setting ``None`` in JWT claims when they have no value." msgstr "" -#: ../../CHANGES.rst:416 +#: ../../CHANGES.rst:419 #: e16dcca3b764486d874401ba65e22f78 msgid "Display password recovery button on OIDC login page. :pr:`129`" msgstr "" -#: ../../CHANGES.rst:419 +#: ../../CHANGES.rst:422 #: dcbd97e0bc4f44babcdc9ad9a503c162 msgid "[0.0.25] - 2023-05-05" msgstr "" -#: ../../CHANGES.rst:424 +#: ../../CHANGES.rst:427 #: 4109765130284304994ae405858bdd3c msgid "Check the new format with ``git diff 0.0.25 0.0.24 canaille/conf/config.sample.toml``" msgstr "" -#: ../../CHANGES.rst:429 +#: ../../CHANGES.rst:432 #: c4645c08f789400bba029897871bb828 msgid "Renamed user model attributes to match SCIM naming convention. :pr:`123`" msgstr "" -#: ../../CHANGES.rst:430 +#: ../../CHANGES.rst:433 #: 3c58d21fdc81418e8ee43179c2d6384f msgid "Moved OIDC related configuration entries in ``OIDC``." msgstr "" -#: ../../CHANGES.rst:431 +#: ../../CHANGES.rst:434 #: 5b002906414e41448a3fadea87d71e45 msgid "Moved ``LDAP`` configuration entry to ``BACKENDS.LDAP``." msgstr "" -#: ../../CHANGES.rst:432 +#: ../../CHANGES.rst:435 #: d58c113094474cf3b82e8a3303202bb6 msgid "Bumped to `HTMX` 1.9.0. :pr:`124`" msgstr "" -#: ../../CHANGES.rst:433 +#: ../../CHANGES.rst:436 #: 3bbdffb495f74fccbdb9eeb78a8eaf81 msgid "ACL filters are no more LDAP filters but user attribute mappings. :pr:`125`" msgstr "" -#: ../../CHANGES.rst:434 +#: ../../CHANGES.rst:437 #: 0d3ea4f8df2542e0a7da5029159f31e0 msgid "Bumped to `HTMX` 1.9.2. :pr:`127`" msgstr "" -#: ../../CHANGES.rst:439 +#: ../../CHANGES.rst:442 #: 71139e5ab6e34c2a87d51d3d04c0dbc0 msgid "``OIDC.JWT.MAPPING`` configuration entry is really optional now." msgstr "" -#: ../../CHANGES.rst:440 +#: ../../CHANGES.rst:443 #: e34b111a3a8b4e2da966a36107a682b5 msgid "Fixed empty model attributes registration. :pr:`125`" msgstr "" -#: ../../CHANGES.rst:441 +#: ../../CHANGES.rst:444 #: 566d49eca850419cbb39c3a78a4160aa msgid "Password initialization mails were not correctly sent. :pr:`128`" msgstr "" -#: ../../CHANGES.rst:444 +#: ../../CHANGES.rst:447 #: f461dc48e9c846628f7ddb99b18252c6 msgid "[0.0.24] - 2023-04-07" msgstr "" -#: ../../CHANGES.rst:449 +#: ../../CHANGES.rst:452 #: 007393d26d6e4375a0e05cbbf6c41d65 msgid "Fixed avatar update. :pr:`122`" msgstr "" -#: ../../CHANGES.rst:452 +#: ../../CHANGES.rst:455 #: 0ddfaf5df815484f9eb469a884e5f667 msgid "[0.0.23] - 2023-04-05" msgstr "" -#: ../../CHANGES.rst:457 +#: ../../CHANGES.rst:460 #: 2e7346baddf44a7f9f5b9a05ae826913 msgid "Organization field. :pr:`116`" msgstr "" -#: ../../CHANGES.rst:458 +#: ../../CHANGES.rst:461 #: 1c68c43ae90f4e2e944dab12514f06d1 msgid "ETag and Last-Modified headers on user photos. :pr:`116`" msgstr "" -#: ../../CHANGES.rst:459 +#: ../../CHANGES.rst:462 #: bcaf8fe7d8e940f191ed6ea5178566c1 msgid "Dynamic form validation. :pr:`120`" msgstr "" -#: ../../CHANGES.rst:464 +#: ../../CHANGES.rst:467 #: 2b077ff5215a4b20b8438e82f4366ada msgid "UX rework. Submenu addition. :pr:`114`" msgstr "" -#: ../../CHANGES.rst:465 +#: ../../CHANGES.rst:468 #: 166152fdbf6248e8a4af29f4f3bf5b6e msgid "Properly handle LDAP date timezones. :pr:`117`" msgstr "" -#: ../../CHANGES.rst:470 +#: ../../CHANGES.rst:473 #: 343c4102b6d648018544f151f97540e1 msgid "CSRF protection on every forms. :pr:`119`" msgstr "" -#: ../../CHANGES.rst:473 +#: ../../CHANGES.rst:476 #: 7140973831594dacad0bd205ca9b60e5 msgid "[0.0.22] - 2023-03-13" msgstr "" -#: ../../CHANGES.rst:477 +#: ../../CHANGES.rst:480 #: 67dc897fec2946598dbb4fe82db8a94f msgid "The `Faker` library is not imported anymore when the `clean` command is called." msgstr "" -#: ../../CHANGES.rst:480 +#: ../../CHANGES.rst:483 #: 58e3c0af1ce74125bf42a5ea16b88fbf msgid "[0.0.21] - 2023-03-12" msgstr "" -#: ../../CHANGES.rst:485 +#: ../../CHANGES.rst:488 #: a25f75d9086a4499aa1088e537f21bc3 msgid "Display TOS and policy URI on the consent list page. :pr:`102`" msgstr "" -#: ../../CHANGES.rst:486 +#: ../../CHANGES.rst:489 #: e848a4f5372b44249423579a7e2cdc3d msgid "Admin token deletion. :pr:`100` :pr:`101`" msgstr "" -#: ../../CHANGES.rst:487 +#: ../../CHANGES.rst:490 #: 61b841de5b89407d9912c8c73309111a msgid "Revoked consents can be restored. :pr:`103`" msgstr "" -#: ../../CHANGES.rst:488 +#: ../../CHANGES.rst:491 #: 656acd80913242a4820a20bc76d797e8 msgid "Pre-consented clients are displayed in the user consent list, and their consents can be revoked. :issue:`69` :pr:`103`" msgstr "" -#: ../../CHANGES.rst:490 +#: ../../CHANGES.rst:493 #: e08c1586240745fa9537dd7501475c0d msgid "A ``populate`` command can be used to fill the database with random users generated with faker. :pr:`105`" msgstr "" -#: ../../CHANGES.rst:492 +#: ../../CHANGES.rst:495 #: dc653adfdbc441589c385b956ae9739e msgid "SMTP SSL support. :pr:`108`" msgstr "" -#: ../../CHANGES.rst:493 +#: ../../CHANGES.rst:496 #: c69d8b01e4194d5b9268b84ab81849d6 msgid "Server side pagination. :issue:`114` :pr:`111`" msgstr "" -#: ../../CHANGES.rst:494 +#: ../../CHANGES.rst:497 #: 5b4f3aa107a74df3ba845920503dfdc5 msgid "Department number support. :issue:`129`" msgstr "" -#: ../../CHANGES.rst:495 +#: ../../CHANGES.rst:498 #: d219e1ac8fa148d5b6e4babc678fbeb2 msgid "Address edition support (but not in the OIDC claims yet). :pr:`112`" msgstr "" -#: ../../CHANGES.rst:496 +#: ../../CHANGES.rst:499 #: 52d2ceda28ab430a984dee19f8766b2a msgid "Title edition support. :pr:`113`" msgstr "" -#: ../../CHANGES.rst:501 +#: ../../CHANGES.rst:504 #: c4aca25daa3b491f9208d71f7715800f msgid "Client deletion also deletes related :class:`~canaille.oidc.basemodels.Consent`, :class:`~canaille.oidc.basemodels.Token` and :class:`~canaille.oidc.basemodels.AuthorizationCode` objects. :issue:`126` :pr:`98`" msgstr "" -#: ../../CHANGES.rst:507 +#: ../../CHANGES.rst:510 #: a1c057df21a9436a9b149fb91fdb28d0 msgid "Removed the `DataTables` Javascript library." msgstr "" -#: ../../CHANGES.rst:510 +#: ../../CHANGES.rst:513 #: 74a0312b6fff499fa609d0adbe73dfac msgid "[0.0.20] - 2023-01-28" msgstr "" -#: ../../CHANGES.rst:515 +#: ../../CHANGES.rst:518 #: c443970df56e4203b8ee3fd9e4fa2395 msgid "Spanish translation. :pr:`85` :pr:`88`" msgstr "" -#: ../../CHANGES.rst:516 +#: ../../CHANGES.rst:519 #: 9e42a95e59a74c5584d1144c249a57c1 msgid "Dedicated connectivity test email. :pr:`89`" msgstr "" -#: ../../CHANGES.rst:517 +#: ../../CHANGES.rst:520 #: e06855259b6f463897acd0f8a23cd05e msgid "Update to jquery 3.6.3. :pr:`90`" msgstr "" -#: ../../CHANGES.rst:518 +#: ../../CHANGES.rst:521 #: 96cb7430946248108d8c97973a4799d5 msgid "Update to fomantic-ui 2.9.1. :pr:`90`" msgstr "" -#: ../../CHANGES.rst:519 +#: ../../CHANGES.rst:522 #: 5b5784d9aedb4949bac1591395fc7eb9 msgid "Update to DataTables 1.13.1. :pr:`90`" msgstr "" -#: ../../CHANGES.rst:524 +#: ../../CHANGES.rst:527 #: e88b90b5e0eb418f99ea2839c1e79943 msgid "Fix typos and grammar errors. :pr:`84`" msgstr "" -#: ../../CHANGES.rst:525 +#: ../../CHANGES.rst:528 #: d333115d646f4ccf9a5bb2dc4d23eba0 msgid "Fix wording and punctuations. :pr:`86`" msgstr "" -#: ../../CHANGES.rst:526 +#: ../../CHANGES.rst:529 #: cfc153afa2ec4bee9c2dd589a234716c msgid "Fix HTML lang tag. :issue:`122` :pr:`87`" msgstr "" -#: ../../CHANGES.rst:527 +#: ../../CHANGES.rst:530 #: a2dc7b3677d040c7a43bde721f766029 msgid "Automatically trims the HTML translated strings. :pr:`91`" msgstr "" -#: ../../CHANGES.rst:528 +#: ../../CHANGES.rst:531 #: 9a91064adb7f414fab73518fbc77b01d msgid "Fixed dynamic registration scope management. :issue:`123` :pr:`93`" msgstr "" -#: ../../CHANGES.rst:531 +#: ../../CHANGES.rst:534 #: d7a2cda6d8e24cc484f13ee4df40c1ea msgid "[0.0.19] - 2023-01-14" msgstr "" -#: ../../CHANGES.rst:536 +#: ../../CHANGES.rst:539 #: f7c94b5e7545458e8375ef8a8e3dc21c msgid "Ensures the token `expires_in` claim and the `access_token` `exp` claim have the same value. :pr:`83`" msgstr "" -#: ../../CHANGES.rst:540 +#: ../../CHANGES.rst:543 #: 9291df232e4b4a7eb97fb87504f9b8d4 msgid "[0.0.18] - 2022-12-28" msgstr "" -#: ../../CHANGES.rst:545 +#: ../../CHANGES.rst:548 #: c896b9996ab24cfeb217e9ebfdbed090 msgid "OIDC end_session was not returning the ``state`` parameter in the ``post_logout_redirect_uri``. :pr:`82`" msgstr "" -#: ../../CHANGES.rst:549 +#: ../../CHANGES.rst:552 #: 2fa2e9a70b8d4ab4bed4d7f0d8d68f37 msgid "[0.0.17] - 2022-12-26" msgstr "" -#: ../../CHANGES.rst:554 +#: ../../CHANGES.rst:557 #: cff81f4ef5254cfdb1e6ba76c2c3b9f6 msgid "Fixed group deletion button. :pr:`80`" msgstr "" -#: ../../CHANGES.rst:555 +#: ../../CHANGES.rst:558 #: 552d92ac7c364f198201b60a3abebae2 msgid "Fixed post requests in oidc clients views. :pr:`81`" msgstr "" -#: ../../CHANGES.rst:558 +#: ../../CHANGES.rst:561 #: f7c78b950b184117855277070cb4e548 msgid "[0.0.16] - 2022-12-15" msgstr "" -#: ../../CHANGES.rst:563 +#: ../../CHANGES.rst:566 #: 3e522208e81740fba479a43b017311fd msgid "Fixed LDAP operational attributes handling." msgstr "" -#: ../../CHANGES.rst:566 +#: ../../CHANGES.rst:569 #: 53e83abb15b24cc0a3d589011cf7c2a3 msgid "[0.0.15] - 2022-12-15" msgstr "" -#: ../../CHANGES.rst:571 +#: ../../CHANGES.rst:574 #: 7194a505926740e3b52b81708d2818de msgid "User can chose their display name. :pr:`77`" msgstr "" -#: ../../CHANGES.rst:572 +#: ../../CHANGES.rst:575 #: 5c5a59a03bd5497aa7474ae59e88f6bf msgid "Bumped to Authlib 1.2. :pr:`78`" msgstr "" -#: ../../CHANGES.rst:573 +#: ../../CHANGES.rst:576 #: 0a3d037fae66464b8c2dfeea28dd3eaf msgid "Implemented :rfc:`RFC7592 <7592>` OAuth 2.0 Dynamic Client Registration Management Protocol. :pr:`79`" msgstr "" -#: ../../CHANGES.rst:575 +#: ../../CHANGES.rst:578 #: 0670727ea1074acf968c49e71dc4062b msgid "Add the ``nonce`` parameter to the ``claims_supported`` server metadata list." msgstr "" -#: ../../CHANGES.rst:578 +#: ../../CHANGES.rst:581 #: eb86b7335b7b4971812f25c9a2d37d1e msgid "[0.0.14] - 2022-11-29" msgstr "" -#: ../../CHANGES.rst:582 +#: ../../CHANGES.rst:585 #: 9903a64c05994256813debf83e9a6b21 msgid "Fixed translation catalogs packaging." msgstr "" -#: ../../CHANGES.rst:585 +#: ../../CHANGES.rst:588 #: eb1e508e7d2c46bdb471cffecbe4d897 msgid "[0.0.13] - 2022-11-21" msgstr "" -#: ../../CHANGES.rst:590 +#: ../../CHANGES.rst:593 #: 6e71d21752234824bc42897b8a434bb3 msgid "Fixed a bug on the contacts field in the admin client form following the LDAP schema update of 0.0.12." msgstr "" -#: ../../CHANGES.rst:592 +#: ../../CHANGES.rst:595 #: 374bd3f105af42bc8ea5c0de35e7437f msgid "Fixed a bug happening during RP initiated logout on clients without `post_logout_redirect_uri` defined." msgstr "" -#: ../../CHANGES.rst:594 +#: ../../CHANGES.rst:597 #: 6244294cde9d429dbab852b0f7721160 msgid "Gitlab CI fix. :pr:`64`" msgstr "" -#: ../../CHANGES.rst:595 +#: ../../CHANGES.rst:598 #: 8dc7de6abbd447f4a78272f33cbcb6cf msgid "Fixed `client_secret` display on the client administration page. :pr:`65`" msgstr "" -#: ../../CHANGES.rst:596 +#: ../../CHANGES.rst:599 #: be276c6c0aed433987b562fa51a9af06 msgid "Fixed non-square logo CSS. :pr:`67`" msgstr "" -#: ../../CHANGES.rst:597 +#: ../../CHANGES.rst:600 #: 45c4b643c08f4e98b8eb1994cca78051 msgid "Fixed schema path on installation. :pr:`68`" msgstr "" -#: ../../CHANGES.rst:598 +#: ../../CHANGES.rst:601 #: 490ff7e15c244e1c80522169f52be22c msgid "Fixed RFC7591 ``software_statement`` claim support. :pr:`70`" msgstr "" -#: ../../CHANGES.rst:599 +#: ../../CHANGES.rst:602 #: 13d139a4ca6b420eb0780952acd8582c msgid "Fixed client preconsent disabling. :pr:`72`" msgstr "" -#: ../../CHANGES.rst:604 +#: ../../CHANGES.rst:607 #: f863beea190c4605afc13c35d7828c7e msgid "Python 3.11 support. :pr:`61`" msgstr "" -#: ../../CHANGES.rst:605 +#: ../../CHANGES.rst:608 #: dfa820f752f64485950bd9f2f4f2f798 msgid "``apparmor`` slapd configuration instructions in the documentation page for contributions. :pr:`66`" msgstr "" -#: ../../CHANGES.rst:606 +#: ../../CHANGES.rst:609 #: 33f4b497e723467fb7cca94de105b331 msgid "``preferredLanguage`` attribute support. :pr:`75`" msgstr "" -#: ../../CHANGES.rst:611 +#: ../../CHANGES.rst:614 #: 80931cb05ba54eb0bdd13af0e69ae5c4 msgid "Replaced the use of the deprecated `FLASK_ENV` environment variable by `FLASK_DEBUG`." msgstr "" -#: ../../CHANGES.rst:613 +#: ../../CHANGES.rst:616 #: 74c0ecca84cb4195b047360a2a12b281 msgid "Dynamically generate the server metadata. Users won't have to copy and manually edit ``oauth-authorizationserver.json`` and ``openid-configuration.json``. :pr:`71`" msgstr "" -#: ../../CHANGES.rst:616 +#: ../../CHANGES.rst:619 #: b56f59b2dd124c91a6268830cf4ddecc msgid "The `FROM_ADDR` configuration option is not mandatory anymore. :pr:`73`" msgstr "" -#: ../../CHANGES.rst:617 +#: ../../CHANGES.rst:620 #: d701256eb4764f81827acd7b0a0dbda3 msgid "The `JWT.ISS` configuration option is not mandatory anymore. :pr:`74`" msgstr "" -#: ../../CHANGES.rst:620 +#: ../../CHANGES.rst:623 #: 45607852e443428199051f1ecba9ba24 msgid "[0.0.12] - 2022-10-24" msgstr "" -#: ../../CHANGES.rst:625 +#: ../../CHANGES.rst:628 #: 9997d515babd44b4841ef0218885f1f1 msgid "Basic WebFinger endpoint. :pr:`59`" msgstr "" -#: ../../CHANGES.rst:626 +#: ../../CHANGES.rst:629 #: 509a601f77664756bc01064f20359cf6 msgid "Bumped to FomanticUI 2.9.0." msgstr "" -#: ../../CHANGES.rst:627 +#: ../../CHANGES.rst:630 #: 2cfcbdba2e9541dbab610bc724a2683a msgid "Implemented Dynamic Client Registration. :pr:`60`" msgstr "" -#: ../../CHANGES.rst:630 +#: ../../CHANGES.rst:633 #: 4acb242ffb5440d1a468e2d3c3856fe8 msgid "[0.0.11] - 2022-08-11" msgstr "" -#: ../../CHANGES.rst:635 +#: ../../CHANGES.rst:638 #: 0c4bd2691ba9453b88a686a22ede18ef msgid "Default theme has a dark variant. :pr:`57`" msgstr "" -#: ../../CHANGES.rst:640 +#: ../../CHANGES.rst:643 #: d3cabac68def4f77a693a6159bf2f5c0 msgid "Fixed missing ``canaille`` binary. :pr:`58`" msgstr "" -#: ../../CHANGES.rst:643 +#: ../../CHANGES.rst:646 #: 735459f4aeea42c6b0f7be4a2b06802f msgid "[0.0.10] - 2022-07-07" msgstr "" -#: ../../CHANGES.rst:648 +#: ../../CHANGES.rst:651 #: f9dfd87d0fa145579e2297b27b61a11b msgid "Online demo. :pr:`55`" msgstr "" -#: ../../CHANGES.rst:649 +#: ../../CHANGES.rst:652 #: 5e5eef7b53ce470ab0a0137617552a9c msgid "The consent page was displaying scopes not supported by clients. :pr:`56`" msgstr "" -#: ../../CHANGES.rst:650 +#: ../../CHANGES.rst:653 #: f7b8675a05b64bafb3efbbad603537ce msgid "Fixed end session when user are already disconnected." msgstr "" -#: ../../CHANGES.rst:653 +#: ../../CHANGES.rst:656 #: a14c8084a27d463f82c1573d946a6676 msgid "[0.0.9] - 2022-06-05" msgstr "" -#: ../../CHANGES.rst:658 +#: ../../CHANGES.rst:661 #: d04e2396209641cc84fa39d8bb397eaa msgid "``DISABLE_PASSWORD_RESET`` configuration option to disable password recovery. :pr:`46`" msgstr "" -#: ../../CHANGES.rst:659 +#: ../../CHANGES.rst:662 #: 01acc147a456445eb3858de7b0586dca msgid "``edit_self`` ACL permission to control user self edition. :pr:`47`" msgstr "" -#: ../../CHANGES.rst:660 +#: ../../CHANGES.rst:663 #: dafb92303cb147909db73fdc619f1267 msgid "`RP-initiated logout` implementation. :pr:`54`" msgstr "" -#: ../../CHANGES.rst:665 +#: ../../CHANGES.rst:668 #: f672b1443aa9498994204b20952103e4 msgid "Bumped to Authlib 1. :pr:`48`" msgstr "" -#: ../../CHANGES.rst:666 +#: ../../CHANGES.rst:669 #: 18c1456a82f748cd9ee0d6abcb40801f msgid "Various documentation improvements. :pr:`50`" msgstr "" -#: ../../CHANGES.rst:667 +#: ../../CHANGES.rst:670 #: 77c7a3b3242647718a3a94a1fc4d05a1 msgid "Use poetry instead of setuptools as project management tool. :pr:`51`" msgstr "" -#: ../../CHANGES.rst:668 +#: ../../CHANGES.rst:671 #: 3b65181a80b64d0d8a474a5e643d3f80 msgid "Additional tests for the OIDC ``nonce`` parameter. :pr:`52`" msgstr "" -#: ../../CHANGES.rst:672 +#: ../../CHANGES.rst:675 #: 35eef6ab06b940e8ad49bf31b7620404 msgid "``HIDE_INVALID_LOGIN`` behavior and default value." msgstr "" -#: ../../CHANGES.rst:673 +#: ../../CHANGES.rst:676 #: 2792732f7d154df2b11a35b13114939b msgid "Compiled translation catalogs are not versioned anymore. :pr:`49` :pr:`53`" msgstr "" -#: ../../CHANGES.rst:676 +#: ../../CHANGES.rst:679 #: 8766634316d146ab8929259434391f34 msgid "[0.0.8] - 2022-03-15" msgstr "" -#: ../../CHANGES.rst:681 +#: ../../CHANGES.rst:684 #: f053b2fe7153473a81cb24bfc2b90c7d msgid "Fixed dependencies." msgstr "" -#: ../../CHANGES.rst:684 +#: ../../CHANGES.rst:687 #: 6fe1289ea759485b9c3c7658461a409d msgid "[0.0.7] - 2022-03-15" msgstr "" -#: ../../CHANGES.rst:689 +#: ../../CHANGES.rst:692 #: f40f5e320ea4412fadc8f1bc1d99198c msgid "Fixed spaces and escaped special char in LDAP ``cn/dn`` attributes. :pr:`43`" msgstr "" -#: ../../CHANGES.rst:692 +#: ../../CHANGES.rst:695 #: ac9b3059b303486a9b31536f1726d873 msgid "[0.0.6] - 2022-03-08" msgstr "" -#: ../../CHANGES.rst:697 +#: ../../CHANGES.rst:700 #: 357a41c66f054b9b830d9ae20551690d msgid "Access token are JWT. :pr:`38`" msgstr "" -#: ../../CHANGES.rst:702 +#: ../../CHANGES.rst:705 #: 20b619f456934ab09712d95d37ef12cd msgid "Default groups on invitations. :pr:`41`" msgstr "" -#: ../../CHANGES.rst:703 +#: ../../CHANGES.rst:706 #: 74f8d8568cd1405bbef739de7b92f380 msgid "LDAP schemas are shipped within the Canaille package. :pr:`42`" msgstr "" -#: ../../CHANGES.rst:706 +#: ../../CHANGES.rst:709 #: 936cdbdb780241beb677c1a3c5d21735 msgid "[0.0.5] - 2022-02-17" msgstr "" -#: ../../CHANGES.rst:711 +#: ../../CHANGES.rst:714 #: b49925c79428413ca8c31eff4f42a588 msgid "LDAP model objects have new identifiers. :pr:`37`" msgstr "" -#: ../../CHANGES.rst:716 +#: ../../CHANGES.rst:719 #: 21e3bd1145ce480ea8a82394722cef34 msgid "Admin menu dropdown display. :pr:`39`" msgstr "" -#: ../../CHANGES.rst:717 +#: ../../CHANGES.rst:720 #: b50bd877e6fa4055a450f65d4e0e6951 msgid "``GROUP_ID_ATTRIBUTE`` configuration typo. :pr:`40`" msgstr "" -#: ../../CHANGES.rst:720 +#: ../../CHANGES.rst:723 #: 93523c049fd2438b9f8dbb942b657b7c msgid "[0.0.4] - 2022-02-16" msgstr "" -#: ../../CHANGES.rst:725 +#: ../../CHANGES.rst:728 #: 9cc5e4c0be3e43f98a84d076d254a7a8 msgid "Client pre-authorization. :pr:`11`" msgstr "" -#: ../../CHANGES.rst:726 +#: ../../CHANGES.rst:729 #: b1444e5514e3495f8f05b00bfb31e54b msgid "LDAP permissions check with the check command. :pr:`12`" msgstr "" -#: ../../CHANGES.rst:727 +#: ../../CHANGES.rst:730 #: 81badbb21dfe4dd0bd990037947c24cf msgid "Update consents when a scope required is larger than the scope of an already given consent. :pr:`13`" msgstr "" -#: ../../CHANGES.rst:729 +#: ../../CHANGES.rst:732 #: 5f6092f6103d401e9fe4554e04ad12cb msgid "Theme customization. :pr:`15`" msgstr "" -#: ../../CHANGES.rst:730 +#: ../../CHANGES.rst:733 #: 7e99d3a9c9134144a8e18989e6d0d633 msgid "Logging configuration. :pr:`16`" msgstr "" -#: ../../CHANGES.rst:731 +#: ../../CHANGES.rst:734 #: abd6618054b443efbb5101e9c32f0c90 msgid "Installation command. :pr:`17`" msgstr "" -#: ../../CHANGES.rst:732 +#: ../../CHANGES.rst:735 #: 18c69372e28c42c4b0ac0cae51fcd8aa msgid "Invitation links. :pr:`18`" msgstr "" -#: ../../CHANGES.rst:733 +#: ../../CHANGES.rst:736 #: 2e35dc7cf246485c97650451d1f41d93 msgid "Advanced permissions. :pr:`20`" msgstr "" -#: ../../CHANGES.rst:734 +#: ../../CHANGES.rst:737 #: ef3b8ab7e89448089a9d09363832c7cc msgid "An option to not use OIDC. :pr:`23`" msgstr "" -#: ../../CHANGES.rst:735 +#: ../../CHANGES.rst:738 #: 4d5d5581283a4eaabab00c6df18077a0 msgid "Disable some features when no SMTP server is configured. :pr:`24`" msgstr "" -#: ../../CHANGES.rst:736 +#: ../../CHANGES.rst:739 #: a54b117ff68e47eabb66aa0a741790b1 msgid "Login placeholder dynamically generated according to the configuration. :pr:`25`" msgstr "" -#: ../../CHANGES.rst:737 +#: ../../CHANGES.rst:740 #: 8593aca44439457296e5591823f56739 msgid "Added an option to tune object IDs. :pr:`26`" msgstr "" -#: ../../CHANGES.rst:738 +#: ../../CHANGES.rst:741 #: 548d5d09a1da4104aed49324dd3d96b6 msgid "Avatar support. :pr:`27`" msgstr "" -#: ../../CHANGES.rst:739 +#: ../../CHANGES.rst:742 #: e6275bae918547beab8caabaf64f57db msgid "Dynamical and configurable JWT claims. :pr:`28`" msgstr "" -#: ../../CHANGES.rst:740 +#: ../../CHANGES.rst:743 #: 82bbcaaa7973438696de021fbff14354 msgid "UI improvements. :pr:`29`" msgstr "" -#: ../../CHANGES.rst:741 +#: ../../CHANGES.rst:744 #: 70cd1dd3d81d4288b1c6bca674492944 msgid "Invitation links expiration. :pr:`30`" msgstr "" -#: ../../CHANGES.rst:742 +#: ../../CHANGES.rst:745 #: af865fef102c44bc801e8aec157c2835 msgid "Invitees can choose their IDs. :pr:`31`" msgstr "" -#: ../../CHANGES.rst:743 +#: ../../CHANGES.rst:746 #: d194b87cfbd94dd398f1c58bec6e4c37 msgid "LDAP backend refactoring. :pr:`35`" msgstr "" -#: ../../CHANGES.rst:748 +#: ../../CHANGES.rst:751 #: 2409763cd25243c9a80678c470fa336d msgid "Fixed ghost members in a group. :pr:`14`" msgstr "" -#: ../../CHANGES.rst:749 +#: ../../CHANGES.rst:752 #: ae04a8fa1896467792d8aaaf161fed29 msgid "Fixed email sender names. :pr:`19`" msgstr "" -#: ../../CHANGES.rst:750 +#: ../../CHANGES.rst:753 #: 596c5956ebc6442984251ca5c558834e msgid "Fixed filter being not escaped. :pr:`21`" msgstr "" -#: ../../CHANGES.rst:751 +#: ../../CHANGES.rst:754 #: bbf97ea202404efd8708cfbed4bbfe74 msgid "Demo script good practices. :pr:`32`" msgstr "" -#: ../../CHANGES.rst:752 +#: ../../CHANGES.rst:755 #: 8d176b7d4da5419d8768430eeb01036c msgid "Binary path for Debian. :pr:`33`" msgstr "" -#: ../../CHANGES.rst:753 +#: ../../CHANGES.rst:756 #: 004ecd0e934049ef823bbf0d63f75c14 msgid "Last name was not mandatory in the forms while this was mandatory in the LDAP server. :pr:`34`" msgstr "" -#: ../../CHANGES.rst:755 +#: ../../CHANGES.rst:758 #: c6de3dbeeb5f40ff85c60e062271bfdb msgid "Spelling typos. :pr:`36`" msgstr "" -#: ../../CHANGES.rst:758 +#: ../../CHANGES.rst:761 #: d49aed2f00e346cc8adaa26aa54f470a msgid "[0.0.3] - 2021-10-13" msgstr "" -#: ../../CHANGES.rst:763 +#: ../../CHANGES.rst:766 #: 0b32a6319c044bba95b3a00f245c6956 msgid "Two-steps sign-in. :issue:`49`" msgstr "" -#: ../../CHANGES.rst:764 +#: ../../CHANGES.rst:767 #: 4cf53569893c4b0ba8eab17b44a4a15b msgid "Tokens can have several audiences. :issue:`62` :pr:`9`" msgstr "" -#: ../../CHANGES.rst:765 +#: ../../CHANGES.rst:768 #: 2956507b8bba47839fef6f9a63d5321a msgid "Configuration check command. :issue:`66` :pr:`8`" msgstr "" -#: ../../CHANGES.rst:766 +#: ../../CHANGES.rst:769 #: 0415c157cb414913b3d7748afba41cda msgid "Groups management. :issue:`12` :pr:`6`" msgstr "" -#: ../../CHANGES.rst:771 +#: ../../CHANGES.rst:774 #: e08a9eafc49f45cbb361ed3bd89d4649 msgid "Introspection access bugfix. :issue:`63` :pr:`10`" msgstr "" -#: ../../CHANGES.rst:772 +#: ../../CHANGES.rst:775 #: 48e63a4a411d4aab8259f74b1d257a37 msgid "Introspection sub claim. :issue:`64` :pr:`7`" msgstr "" -#: ../../CHANGES.rst:775 +#: ../../CHANGES.rst:778 #: 2a9047b937be481f811eb403d6bf7fd9 msgid "[0.0.2] - 2021-01-06" msgstr "" -#: ../../CHANGES.rst:780 +#: ../../CHANGES.rst:783 #: 9f74458dacff435998774594822a1506 msgid "Login page is responsive. :issue:`1`" msgstr "" -#: ../../CHANGES.rst:781 +#: ../../CHANGES.rst:784 #: 8a87683d8d524cd482264473256b3777 msgid "Adapt mobile keyboards to login page fields. :issue:`2`" msgstr "" -#: ../../CHANGES.rst:782 +#: ../../CHANGES.rst:785 #: c777083179094cd994619adcfc8499d9 msgid "Password recovery interface. :issue:`3`" msgstr "" -#: ../../CHANGES.rst:783 +#: ../../CHANGES.rst:786 #: c7393dc1bb6a4290bfdb2d59a3fef0c9 msgid "User profile interface. :issue:`4`" msgstr "" -#: ../../CHANGES.rst:784 +#: ../../CHANGES.rst:787 #: e874e0e97cae4310ba62553c3d31cd16 msgid "Renamed the project *Canaille*. :issue:`5`" msgstr "" -#: ../../CHANGES.rst:785 +#: ../../CHANGES.rst:788 #: 27a300eabaaf4644989d134ccca22dd8 msgid "Command to remove old tokens. :issue:`17`" msgstr "" -#: ../../CHANGES.rst:786 +#: ../../CHANGES.rst:789 #: 8e168b1583984a71848678112365d1c7 msgid "Improved password recovery email. :issue:`14` :issue:`26`" msgstr "" -#: ../../CHANGES.rst:787 +#: ../../CHANGES.rst:790 #: 901de9a21dd94541b3c23946ada4cd88 msgid "Use Flask `SERVER_NAME` configuration variable instead of `URL`. :issue:`24`" msgstr "" -#: ../../CHANGES.rst:788 +#: ../../CHANGES.rst:791 #: 62c1e3da0a87437aaa529dcc936c7dbc msgid "Improved consents page. :issue:`27`" msgstr "" -#: ../../CHANGES.rst:789 +#: ../../CHANGES.rst:792 #: f816ffeb73244ae0b1171b8c156d1e12 msgid "Admin user page. :issue:`8`" msgstr "" -#: ../../CHANGES.rst:790 +#: ../../CHANGES.rst:793 #: 2241f2b45f1e426f99f68ccc516c6b60 msgid "Project logo. :pr:`29`" msgstr "" -#: ../../CHANGES.rst:791 +#: ../../CHANGES.rst:794 #: dd802cef3e384fdc928fc43178ab119a msgid "User account self-deletion can be enabled in the configuration with `SELF_DELETION`. :issue:`35`" msgstr "" -#: ../../CHANGES.rst:792 +#: ../../CHANGES.rst:795 #: 75d6d908a827424284ea63478783cbf9 msgid "Admins can impersonate users. :issue:`39`" msgstr "" -#: ../../CHANGES.rst:793 +#: ../../CHANGES.rst:796 #: b4eee6e748f94ba9b6e62e2e7fd4d86b msgid "Forgotten page UX improvement. :pr:`43`" msgstr "" -#: ../../CHANGES.rst:794 +#: ../../CHANGES.rst:797 #: 44489482b8d54ae78c70959758d6f825 msgid "Admins can remove clients. :pr:`45`" msgstr "" -#: ../../CHANGES.rst:795 +#: ../../CHANGES.rst:798 #: be6e5371ee2a48efa0d9d276e9caa9a0 msgid "Option `HIDE_INVALID_LOGIN` that can be unactivated to let the user know if the login he attempt to sign in with exists or not. :pr:`48`" msgstr "" -#: ../../CHANGES.rst:797 +#: ../../CHANGES.rst:800 #: b1df16b2411a440d8d2a0745c972f368 msgid "Password initialization mail. :pr:`51`" msgstr "" -#: ../../CHANGES.rst:802 +#: ../../CHANGES.rst:805 #: ba317999584d46d7b5bfda36157bc111 msgid "Form translations. :issue:`19` :issue:`23`" msgstr "" -#: ../../CHANGES.rst:803 +#: ../../CHANGES.rst:806 #: e0d773fd3f814a438321528df1c4d67d msgid "Avoid to use Google Fonts. :issue:`21`" msgstr "" -#: ../../CHANGES.rst:808 +#: ../../CHANGES.rst:811 #: d7c5d0509cfe422ab95beb9c1929e413 msgid "'My tokens' page. :issue:`22`" msgstr "" -#: ../../CHANGES.rst:811 +#: ../../CHANGES.rst:814 #: 35ab727ebe564ff2a2aa3e28f9392f5b msgid "[0.0.1] - 2020-10-21" msgstr "" -#: ../../CHANGES.rst:816 +#: ../../CHANGES.rst:819 #: 487e834d3b154f69991d042f97ce3734 msgid "Initial release." msgstr "" @@ -2370,7 +2380,7 @@ msgid "❌ `OAuth2 Form Post Response Mode ` is set, then users will need to authenticate themselves using a one-time password via an authenticator app. Two options are supported : \"TOTP\" for time one-time password, and \"HOTP\" for HMAC-based one-time password. In case of lost token, TOTP/HOTP authentication can be reset by users with :attr:`user management permission `. If a :class:`mail server ` is configured and the :attr:`email one-time password feature ` is enabled, then users will need to authenticate themselves via a one-time password sent to their primary email address. If a :class:`smpp server ` is configured and the :attr:`sms one-time password feature ` is enabled, then users will need to authenticate themselves via a one-time password sent to their primary phone number." msgstr "" -#: ../features.rst:189 +#: ../features.rst:191 +#: 39adf64b80444b27bb6f9f11747a6960 +msgid "Intruder lockout" +msgstr "" + +#: ../features.rst:193 +#: e884c68544f2480db394e53aeb54a811 +msgid "If the :attr:`intruder lockout feature ` is enabled, then users will have to wait for an increasingly long time between each failed login attempt." +msgstr "" + +#: ../features.rst:196 #: cbba3fccd9f84230b6eb0774cfd7e109 msgid "Web interface" msgstr "" -#: ../features.rst:194 +#: ../features.rst:201 #: fab0081b9bd4460098de6df7d8c317b5 msgid "Internationalization" msgstr "" -#: ../features.rst:196 +#: ../features.rst:203 #: 46cf7a3a3e9047439aa7fa6654b07921 msgid "Translation state" msgstr "" -#: ../features.rst:201 +#: ../features.rst:208 #: 0a5afedc31de47a28d0bf7842a8558cd msgid "Canaile will display in your :attr:`preferred language ` if available, or your browser language if available (and if it is not you can :ref:`help us with the translation `). If you prefer, you can also :attr:`force a language ` for every users." msgstr "" -#: ../features.rst:207 +#: ../features.rst:214 #: 2caebf718cab47029a83bb91253e36e5 msgid "Lightweight" msgstr "" -#: ../features.rst:209 +#: ../features.rst:216 #: e3cbad3b2af0422287a92a4094559d8b msgid "The web interface is lightweight, so everything should load quickly. There is a few Javascript here and there to smooth the experience, but no Javascript at all is needed to use Canaille." msgstr "" -#: ../features.rst:213 +#: ../features.rst:220 #: a7db848b637a46b1874f04fb542009e2 msgid "Customizable" msgstr "" -#: ../features.rst:215 +#: ../features.rst:222 #: 0c829a128889493fbc97247a60390954 msgid "The default theme should be good enough for most usages. It has a dark theme, display well on mobile, and let you choose a :attr:`logo ` and a :attr:`favicon `." msgstr "" -#: ../features.rst:218 +#: ../features.rst:225 #: 3a69d40c024744af967a1408c054aca0 msgid "If you need more you can also use a :attr:`custom theme `." msgstr "" -#: ../features.rst:225 +#: ../features.rst:232 #: 003c4e8eee334a9d89486e2c0ae5d106 msgid "Canaille implements a :ref:`subset` of the OAuth2/OpenID Connect specifications . This allows to provide :abbr:`SSO (Single Sign-On)` and :abbr:`SLO (Single Log-On)` to applications plugged to Canaille." msgstr "" -#: ../features.rst:229 +#: ../features.rst:236 #: 51e9a6e1ddb04b99a6a73135fc8728e7 msgid "Consent management" msgstr "" -#: ../features.rst:237 +#: ../features.rst:244 #: a613e3d10f1243f3bc5d4e796b278c89 msgid "Users can give their consent to application requesting access to their personal information, and then revoke those consent at their will." msgstr "" -#: ../features.rst:241 +#: ../features.rst:248 #: 115bec7ea8944f6ab98641d9bd2540ec msgid "Application management" msgstr "" -#: ../features.rst:243 +#: ../features.rst:250 #: 526d36374a8747d6ad6280379bcf664c msgid "Users with the right :attr:`permission ` can manager OIDC clients through the web interface." msgstr "" -#: ../features.rst:245 +#: ../features.rst:252 #: 79f0217902dc4b2ca73128ff6c16e7b5 msgid "In some cases, it might be useful to avoid the consent page for some trusted applications, so clients can be pre-consented." msgstr "" -#: ../features.rst:248 +#: ../features.rst:255 #: d1f7f85df6404afe91d29e4dee44be1d msgid "Discovery" msgstr "" -#: ../features.rst:250 +#: ../features.rst:257 #: 8b306f1c76664574a0f3d85805a46d87 msgid "Canaille implements the :doc:`Discovery specifications ` so most of the applications plugged to Canaille can auto-configure themselves." msgstr "" -#: ../features.rst:253 +#: ../features.rst:260 #: d5a2f0c4fa2f4363b5e87c4243376aaa msgid "Dynamic Client Registration" msgstr "" -#: ../features.rst:255 +#: ../features.rst:262 #: 800aec57df82487f80fc7da359dc5c34 msgid "Canaille implements the :doc:`Dynamic Client Registration specifications `, so when the :attr:`feature is enabled `, clients can register themselves on Canaille without an administrator intervention." msgstr "" -#: ../features.rst:258 +#: ../features.rst:265 #: 9cae9e0af58f499dac34354e9c12785d msgid "System administration" msgstr "" -#: ../features.rst:263 +#: ../features.rst:270 #: ../references/commands.rst:2 #: 9b5fcf18f6214856ae377f83005f8309 #: e2a97a5dfb5844f9a74c78b1a28ed23f msgid "Command Line Interface" msgstr "" -#: ../features.rst:265 +#: ../features.rst:272 #: 98ef5f39d74944668dfff8b63d9d6199 msgid "Canaille comes with a :abbr:`CLI (Command Line Interface)` to help administrators in hosting and management." msgstr "" -#: ../features.rst:267 +#: ../features.rst:274 #: 9a30112ff2eb47c69263e73aa3c4ee15 msgid "There are tools to :ref:`check your configuration ` or to :ref:`install missing parts `. You can use the CLI to :ref:`create `, :ref:`read `, :ref:`update ` and :ref:`delete ` models such as :class:`users `, :class:`groups ` or :class:`OIDC clients `." msgstr "" -#: ../features.rst:270 +#: ../features.rst:277 #: 02d13c90aa8f41f5b1007cd67fcea510 msgid "There are also tools to :ref:`fill your database ` with random objects, for tests purpose for instance." msgstr "" -#: ../features.rst:275 +#: ../features.rst:282 #: ../tutorial/databases.rst:2 #: 0225297b7d884971a952f5ec904a15ac #: cf1fc0e0abb74b3ca66c1e92a5e773e9 msgid "Databases" msgstr "" -#: ../features.rst:277 +#: ../features.rst:284 #: 1a7af5dc07fa4f6c9231664737ee46a7 msgid "Canaille can handle data from the most :ref:`common SQL databases ` such as PostgreSQL, MariaDB or SQLite, as well as :ref:`OpenLDAP `. It also comes with a no-dependency :ref:`in-memory database ` that can be used in unit tests suites." msgstr "" -#: ../features.rst:283 +#: ../features.rst:290 #: a6a6a7334af54051aebed82d83027ea8 msgid "Logging" msgstr "" -#: ../features.rst:285 +#: ../features.rst:292 #: 9bc7705bd378459abf2f813381aa58a6 msgid "Canaille writes :attr:`logs ` for every important event happening, to help administrators understand what is going on and debug funky situations." msgstr "" -#: ../features.rst:287 +#: ../features.rst:294 #: 2aeb5161276a4f048c40a7256c3d7f0e msgid "The following security events are logged with the log level \"security\" for easy retrieval :" msgstr "" -#: ../features.rst:289 +#: ../features.rst:296 #: ed4be0b57afe4ce9976c45f03c249444 msgid "Authentication attempt" msgstr "" -#: ../features.rst:290 +#: ../features.rst:297 #: 452456f9907e4bbd89439903c2fc9ebc msgid "Password update" msgstr "" -#: ../features.rst:291 +#: ../features.rst:298 #: 9ccb4ef2a139403c85223576eb87a182 msgid "Email update" msgstr "" -#: ../features.rst:292 +#: ../features.rst:299 #: bd0936deb7994f8fb59f2f0a47115edc msgid "Forgotten password mail sent to user" msgstr "" -#: ../features.rst:293 +#: ../features.rst:300 #: bd0936deb7994f8fb59f2f0a47115edc msgid "One-time password mail sent to user" msgstr "" -#: ../features.rst:294 +#: ../features.rst:301 #: 478b4f7b443f4f728085a2ea686b0248 msgid "Multi-factor authentication reset" msgstr "" -#: ../features.rst:295 +#: ../features.rst:302 #: 02079fe76d2041aaba48a6b2079630f1 msgid "Token emission" msgstr "" -#: ../features.rst:296 +#: ../features.rst:303 #: 814519684d8c47a5b0b5ae6eaa9aa66e msgid "Token refresh" msgstr "" -#: ../features.rst:297 +#: ../features.rst:304 #: 4489f99b64dd40248f28453fb8b4b0df msgid "Token revokation" msgstr "" -#: ../features.rst:298 +#: ../features.rst:305 #: 99abcc04f85649c1b184e22e67b36f18 msgid "New consent given for client application" msgstr "" -#: ../features.rst:299 +#: ../features.rst:306 #: c64802d623a74d678c4aca29f82c39d7 msgid "Consent revokation" msgstr "" -#: ../features.rst:304 +#: ../features.rst:311 #: f9d92f5f76a745ee97ea36afc853c516 msgid "Development and testing tool" msgstr "" -#: ../features.rst:309 +#: ../features.rst:316 #: 9c0500515a5847c2bec5b1bb743f42fc msgid "Unit-testing tool" msgstr "" -#: ../features.rst:311 +#: ../features.rst:318 #: b1dc62a0c2024ff1bd6682408301766a msgid "Thanks to its lightweight :ref:`in-memory database ` and its curated :ref:`dependency list `, Canaille can be used in the unit test suite of your application, so you can check how it behaves against a real world OpenID Connect server. If you work with python you might want to check :doc:`pytest-iam:index`." msgstr "" -#: ../features.rst:314 +#: ../features.rst:321 #: ff4f45059bc2485eb5fa0145f5f01f9a msgid "Development server" msgstr "" -#: ../features.rst:316 +#: ../features.rst:323 #: a430530dc1ac42b680a9024e920dad7d msgid "It can also being launched in your development environment, if you find that launching a Keycloak in a Docker container is too heavy for your little web application." msgstr "" -#: ../features.rst:321 +#: ../features.rst:328 #: 3594d882079a4c89b28f0d9b25b5a647 msgid "Continuous Integration tools" msgstr "" -#: ../features.rst:323 +#: ../features.rst:330 #: f7bb141a215c46df915ce63b47f13cdb msgid "It also fits well in continuous integration scenarios. Thanks to its :ref:`CLI `, you can prepare data in Canaille, let your application interact with it, and then check the side effects." msgstr "" -#: ../features.rst:326 +#: ../features.rst:333 #: beb39ccb89e040118104ba0c0f41eb71 msgid "Roadmap" msgstr "" -#: ../features.rst:329 +#: ../features.rst:336 #: 4fee3c311fe844bbb345bd5b562844ad msgid "Bêta version" msgstr "" -#: ../features.rst:331 +#: ../features.rst:338 #: f699343ae7fe4f12a9d12f4692c22827 msgid "To go out of the current Alpha version we want to achieve the following tasks:" msgstr "" -#: ../features.rst:333 +#: ../features.rst:340 #: c8aec1fe7d574a789319e75cc64bd2e7 msgid ":issue:`Configuration validation using pydantic <138>`" msgstr "" -#: ../features.rst:336 +#: ../features.rst:343 #: 706d590389f54c40ba1b219877946bb5 msgid "Stable version" msgstr "" -#: ../features.rst:338 +#: ../features.rst:345 #: 54c0d4cc60054a5ebe7456575b1b70c3 msgid "Before we push Canaille in stable version we want to achieve the following tasks:" msgstr "" -#: ../features.rst:341 +#: ../features.rst:348 #: 7807e2d92e264bc78fd5b6a3c63beb3a msgid "Security" msgstr "" -#: ../features.rst:343 +#: ../features.rst:350 #: 577ab46503ee45e89daa8c42938635e5 msgid ":issue:`Password hashing configuration <175>`" msgstr "" -#: ../features.rst:344 +#: ../features.rst:351 #: a337cb0aac704dbca90dd70f1d68456d msgid ":issue:`Authentication logging policy <177>`" msgstr "" -#: ../features.rst:345 +#: ../features.rst:352 #: 39adf64b80444b27bb6f9f11747a6960 msgid ":issue:`Intruder lockout <173>`" msgstr "" -#: ../features.rst:346 +#: ../features.rst:353 #: 3eeac7b1dec04fe9b990864b8810db50 msgid ":issue:`Password expiry policy <176>`" msgstr "" -#: ../features.rst:347 +#: ../features.rst:354 #: 4ad4707b7d02481ab507ded2d410eb70 msgid ":issue:`Multi-factor authentication: Email <47>`" msgstr "" -#: ../features.rst:348 +#: ../features.rst:355 #: 478b4f7b443f4f728085a2ea686b0248 msgid ":issue:`Multi-factor authentication: SMS <47>`" msgstr "" -#: ../features.rst:349 +#: ../features.rst:356 #: fd624a7e3d404428830928ee05ec5348 msgid ":issue:`Multi-factor authentication: OTP <47>`" msgstr "" -#: ../features.rst:352 +#: ../features.rst:359 #: a6acbc89a16a4fad8658fb33764830ad msgid "Packaging" msgstr "" -#: ../features.rst:354 +#: ../features.rst:361 #: 575b556539994d1190e50cbfd0133bd4 msgid ":issue:`Nix package <190>`" msgstr "" -#: ../features.rst:355 +#: ../features.rst:362 #: f8facef108bf4d668509e57200f732bb msgid ":issue:`Docker / OCI package <59>`" msgstr "" -#: ../features.rst:358 +#: ../features.rst:365 #: 92825d26f07c4b718121c2784a9b6b81 msgid "And beyond" msgstr "" -#: ../features.rst:360 +#: ../features.rst:367 #: ac17ddb06c4d400ebc190454535608c2 msgid ":issue:`OpenID Connect certification <182>`" msgstr "" -#: ../features.rst:361 +#: ../features.rst:368 #: 1b80703b0f434fe6ade3288840b9cf3c msgid ":issue:`SCIM support <116>`" msgstr "" @@ -4186,6 +4206,11 @@ msgstr "" msgid "If :py:data:`True`, then users will need to authenticate themselves via a one-time password sent to their primary email address." msgstr "" +#: ../../docstring of canaille.core.configuration.CoreSettings.ENABLE_INTRUDER_LOCKOUT:1 +#: 8e19d8a485fe456191ab16773f84483e +msgid "If :py:data:`True`, then users will have to wait for an increasingly long time between each failed login attempt." +msgstr "" + #: ../../docstring of canaille.core.configuration.CoreSettings.ENABLE_PASSWORD_COMPROMISSION_CHECK:1 #: cb4478169a09415a9f17e3df16239ecd msgid "If :py:data:`True`, Canaille will check if passwords appears in compromission databases such as `HIBP `_ when users choose a new one." @@ -5079,6 +5104,16 @@ msgstr "" msgid "The mutability of the password attribute is \"writeOnly\", indicating that the value MUST NOT be returned by a service provider in any form (the attribute characteristic \"returned\" is \"never\")." msgstr "" +#: ../../docstring of canaille.core.models.User.password_failure_timestamps:1 +#: af54ab55d44c469d886fbacc828582d6 +msgid "This attribute stores the timestamps of the user's failed authentications." +msgstr "" + +#: ../../docstring of canaille.core.models.User.password_failure_timestamps:4 +#: 785dc2a557f5471fb7e5cdebbaf84443 +msgid "It's currently used by the intruder lockout delay system." +msgstr "" + #: ../../docstring of canaille.core.models.User.phone_numbers:1 #: 636757499c76498ca8a1cbad6ea4fbb7 msgid "Phone numbers for the user." @@ -5450,11 +5485,6 @@ msgstr "" msgid "OpenID Connect token definition." msgstr "" -#: ../references/templates.rst:2 -#: 25d974aba30140f4ad6e3445c3d71f50 -msgid "Templates" -msgstr "" - #: ../tutorial/databases.rst:4 #: 2934007ee99c4b5096855dd9bf47208b msgid "Canaille can read and save data in different databases. This page presents the different database backends and their specificities:" diff --git a/pyproject.toml b/pyproject.toml index 5a66b968..cb65392d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -131,6 +131,9 @@ dev = [ ] doc = [ "autodoc-pydantic >= 2.0.1", + # used to compute sphinx uuids + # https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-gettext_uuid + "levenshtein>=0.26.1", "shibuya >= 2024.3.1", "sphinx >= 7.0.0", "sphinx-design >= 0.6.0", diff --git a/uv.lock b/uv.lock index 423dd140..2790fab6 100644 --- a/uv.lock +++ b/uv.lock @@ -212,6 +212,7 @@ dev = [ ] doc = [ { name = "autodoc-pydantic" }, + { name = "levenshtein" }, { name = "shibuya" }, { name = "sphinx" }, { name = "sphinx-click" }, @@ -288,6 +289,7 @@ dev = [ ] doc = [ { name = "autodoc-pydantic", specifier = ">=2.0.1" }, + { name = "levenshtein", specifier = ">=0.26.1" }, { name = "shibuya", specifier = ">=2024.3.1" }, { name = "sphinx", specifier = ">=7.0.0" }, { name = "sphinx-click", specifier = ">=6.0.0" }, @@ -860,6 +862,83 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9b/da/4cbc703cccc326bac1b4311609e694729134d1e8a2b45c224f7cb2602590/legacy_cgi-2.6.1-py3-none-any.whl", hash = "sha256:8eacc1522d9f76451337a4b5a0abf494158d39250754b0d1bc19a14c6512af9b", size = 19574 }, ] +[[package]] +name = "levenshtein" +version = "0.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "rapidfuzz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/97/e6/79807d3b59a67dd78bb77072ca6a28d8db0935161fecf935e6c38c5f6825/levenshtein-0.26.1.tar.gz", hash = "sha256:0d19ba22330d50609b2349021ec3cf7d905c6fe21195a2d0d876a146e7ed2575", size = 374307 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/ae/af5f9e9f06052719df6af46d7a7fee3675fd2dea0e2845cc0f4968cf853f/levenshtein-0.26.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8dc4a4aecad538d944a1264c12769c99e3c0bf8e741fc5e454cc954913befb2e", size = 177032 }, + { url = "https://files.pythonhosted.org/packages/bb/a6/be36c1d43cccd032b359ba2fa66dd299bac0cd226f263672332738535553/levenshtein-0.26.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec108f368c12b25787c8b1a4537a1452bc53861c3ee4abc810cc74098278edcd", size = 157539 }, + { url = "https://files.pythonhosted.org/packages/d1/76/13df26b47c53db1cf01c40bae1483b13919d6eab12cede3b93b018927229/levenshtein-0.26.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69229d651c97ed5b55b7ce92481ed00635cdbb80fbfb282a22636e6945dc52d5", size = 153298 }, + { url = "https://files.pythonhosted.org/packages/f2/d9/c02fd7ec98d55df51c643d0475b859fab19a974eb44e5ca72f642dbfeffd/levenshtein-0.26.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79dcd157046d62482a7719b08ba9e3ce9ed3fc5b015af8ea989c734c702aedd4", size = 186766 }, + { url = "https://files.pythonhosted.org/packages/7a/71/44adaafadc5c93845048b88426ab5e2a8414efce7026478cad115fd08f92/levenshtein-0.26.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f53f9173ae21b650b4ed8aef1d0ad0c37821f367c221a982f4d2922b3044e0d", size = 187546 }, + { url = "https://files.pythonhosted.org/packages/2d/7e/24593d50e9e0911c96631a123760b96d1dabbcf1fc55a300648d4f0240dd/levenshtein-0.26.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3956f3c5c229257dbeabe0b6aacd2c083ebcc1e335842a6ff2217fe6cc03b6b", size = 162601 }, + { url = "https://files.pythonhosted.org/packages/54/98/2285860f07c519af3bb1af29cc4a51c3fd8c028836887615c776f6bb28d4/levenshtein-0.26.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1e83af732726987d2c4cd736f415dae8b966ba17b7a2239c8b7ffe70bfb5543", size = 249164 }, + { url = "https://files.pythonhosted.org/packages/28/f7/87008ca57377f2f296a3b9b87b46fa80a4a471c1d3de3ea4ff37acc65b5a/levenshtein-0.26.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4f052c55046c2a9c9b5f742f39e02fa6e8db8039048b8c1c9e9fdd27c8a240a1", size = 1077613 }, + { url = "https://files.pythonhosted.org/packages/7d/ca/5f2b3c4b181f4e97805ee839c47cb99c8048bf7934358af8c3d6a07fb6c2/levenshtein-0.26.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9895b3a98f6709e293615fde0dcd1bb0982364278fa2072361a1a31b3e388b7a", size = 1331030 }, + { url = "https://files.pythonhosted.org/packages/b3/f4/de5a779d178e489906fd39d7b2bdb782f80a98affc57e9d40a723b9ee89c/levenshtein-0.26.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a3777de1d8bfca054465229beed23994f926311ce666f5a392c8859bb2722f16", size = 1207001 }, + { url = "https://files.pythonhosted.org/packages/f8/61/78b25ef514a23735ae0baf230af668f16d6f5e1466c4db72a4de0e233768/levenshtein-0.26.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:81c57e1135c38c5e6e3675b5e2077d8a8d3be32bf0a46c57276c092b1dffc697", size = 1355999 }, + { url = "https://files.pythonhosted.org/packages/b9/e8/a488dbb99726e08ac05ad3359e7db79e35c2c4e4bafbaaf081ae140c7de3/levenshtein-0.26.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:91d5e7d984891df3eff7ea9fec8cf06fdfacc03cd074fd1a410435706f73b079", size = 1135174 }, + { url = "https://files.pythonhosted.org/packages/52/c1/79693b33ab4c5ba04df8b4d116c2ae4cfaa71e08b2cf2b8cd93d5fa37b07/levenshtein-0.26.1-cp310-cp310-win32.whl", hash = "sha256:f48abff54054b4142ad03b323e80aa89b1d15cabc48ff49eb7a6ff7621829a56", size = 87111 }, + { url = "https://files.pythonhosted.org/packages/e6/ed/5250c0891f6a99e41e715ce379b77863d66356eae7519e3626514f2729b6/levenshtein-0.26.1-cp310-cp310-win_amd64.whl", hash = "sha256:79dd6ad799784ea7b23edd56e3bf94b3ca866c4c6dee845658ee75bb4aefdabf", size = 98062 }, + { url = "https://files.pythonhosted.org/packages/4f/b3/58f69cbd9f21fe7ec54a71059b3e8fdb37c43781b31a36f49c973bd387c5/levenshtein-0.26.1-cp310-cp310-win_arm64.whl", hash = "sha256:3351ddb105ef010cc2ce474894c5d213c83dddb7abb96400beaa4926b0b745bd", size = 87976 }, + { url = "https://files.pythonhosted.org/packages/af/b4/86e447173ca8d936b7ef270d21952a0053e799040e73b843a4a5ac9a15a1/levenshtein-0.26.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:44c51f5d33b3cfb9db518b36f1288437a509edd82da94c4400f6a681758e0cb6", size = 177037 }, + { url = "https://files.pythonhosted.org/packages/27/b3/e15e14e5836dfc23ed014c21b307cbf77b3c6fd75e11d0675ce9a0d43b31/levenshtein-0.26.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56b93203e725f9df660e2afe3d26ba07d71871b6d6e05b8b767e688e23dfb076", size = 157478 }, + { url = "https://files.pythonhosted.org/packages/32/f1/f4d0904c5074e4e9d33dcaf304144e02eae9eec9d61b63bf17b1108ce228/levenshtein-0.26.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:270d36c5da04a0d89990660aea8542227cbd8f5bc34e9fdfadd34916ff904520", size = 153873 }, + { url = "https://files.pythonhosted.org/packages/f9/0d/cd5abe809421ce0d4a2cae60fd2fdf62cb43890068515a8a0069e2b17894/levenshtein-0.26.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:480674c05077eeb0b0f748546d4fcbb386d7c737f9fff0010400da3e8b552942", size = 186850 }, + { url = "https://files.pythonhosted.org/packages/a8/69/03f4266ad83781f2602b1976a2e5a98785c148f9bfc77c343e5aa1840f64/levenshtein-0.26.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13946e37323728695ba7a22f3345c2e907d23f4600bc700bf9b4352fb0c72a48", size = 187527 }, + { url = "https://files.pythonhosted.org/packages/36/fa/ec3be1162b1a757f80e713220470fe5b4db22e23f886f50ac59a48f0a84d/levenshtein-0.26.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ceb673f572d1d0dc9b1cd75792bb8bad2ae8eb78a7c6721e23a3867d318cb6f2", size = 162673 }, + { url = "https://files.pythonhosted.org/packages/9e/d6/dc8358b6a4174f413532aa27463dc4d167ac25742826f58916bb6e6417b1/levenshtein-0.26.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42d6fa242e3b310ce6bfd5af0c83e65ef10b608b885b3bb69863c01fb2fcff98", size = 250413 }, + { url = "https://files.pythonhosted.org/packages/57/5e/a87bf39686482a1df000fdc265fdd812f0cd316d5fb0a25f52654504a82b/levenshtein-0.26.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b8b68295808893a81e0a1dbc2274c30dd90880f14d23078e8eb4325ee615fc68", size = 1078713 }, + { url = "https://files.pythonhosted.org/packages/c5/04/30ab2f27c4ff7d6d98b3bb6bf8541521535ad2d05e50ac8fd00ab701c080/levenshtein-0.26.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b01061d377d1944eb67bc40bef5d4d2f762c6ab01598efd9297ce5d0047eb1b5", size = 1331174 }, + { url = "https://files.pythonhosted.org/packages/e4/68/9c7f60ccb097a86420d058dcc3f575e6b3d663b3a5cde3651443f7087e14/levenshtein-0.26.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9d12c8390f156745e533d01b30773b9753e41d8bbf8bf9dac4b97628cdf16314", size = 1207733 }, + { url = "https://files.pythonhosted.org/packages/64/21/222f54a1a654eca1c1cd015d32d972d70529eb218d469d516f13eac2149d/levenshtein-0.26.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:48825c9f967f922061329d1481b70e9fee937fc68322d6979bc623f69f75bc91", size = 1356116 }, + { url = "https://files.pythonhosted.org/packages/6f/65/681dced2fa798ea7882bff5682ab566689a4920006ed9aca4fd8d1edb2d2/levenshtein-0.26.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d8ec137170b95736842f99c0e7a9fd8f5641d0c1b63b08ce027198545d983e2b", size = 1135459 }, + { url = "https://files.pythonhosted.org/packages/a1/e8/1ff8a634c428ed908d20482f77491cca08fa16c96738ad82d9219da138a1/levenshtein-0.26.1-cp311-cp311-win32.whl", hash = "sha256:798f2b525a2e90562f1ba9da21010dde0d73730e277acaa5c52d2a6364fd3e2a", size = 87265 }, + { url = "https://files.pythonhosted.org/packages/8f/fb/44e9747558a7381ea6736e10ac2f871414007915afb94efac423e68cf441/levenshtein-0.26.1-cp311-cp311-win_amd64.whl", hash = "sha256:55b1024516c59df55f1cf1a8651659a568f2c5929d863d3da1ce8893753153bd", size = 98518 }, + { url = "https://files.pythonhosted.org/packages/04/90/c476a74d8ec25d680b9cbf51966d638623a82a2fd4e99b988a383f22a681/levenshtein-0.26.1-cp311-cp311-win_arm64.whl", hash = "sha256:e52575cbc6b9764ea138a6f82d73d3b1bc685fe62e207ff46a963d4c773799f6", size = 88086 }, + { url = "https://files.pythonhosted.org/packages/4c/53/3685ee7fbe9b8eb4b82d8045255e59dd6943f94e8091697ef3808e7ecf63/levenshtein-0.26.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc741ca406d3704dc331a69c04b061fc952509a069b79cab8287413f434684bd", size = 176447 }, + { url = "https://files.pythonhosted.org/packages/82/7f/7d6fe9b76bd030200f8f9b162f3de862d597804d292af292ec3ce9ae8bee/levenshtein-0.26.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:821ace3b4e1c2e02b43cf5dc61aac2ea43bdb39837ac890919c225a2c3f2fea4", size = 157589 }, + { url = "https://files.pythonhosted.org/packages/bc/d3/44539e952df93c5d88a95a0edff34af38e4f87330a76e8335bfe2c0f31bf/levenshtein-0.26.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92694c9396f55d4c91087efacf81297bef152893806fc54c289fc0254b45384", size = 153306 }, + { url = "https://files.pythonhosted.org/packages/ba/fe/21443c0c50824314e2d2ce7e1e9cd11d21b3643f3c14da156b15b4d399c7/levenshtein-0.26.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51ba374de7a1797d04a14a4f0ad3602d2d71fef4206bb20a6baaa6b6a502da58", size = 184409 }, + { url = "https://files.pythonhosted.org/packages/f0/7b/c95066c64bb18628cf7488e0dd6aec2b7cbda307d93ba9ede68a21af2a7b/levenshtein-0.26.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7aa5c3327dda4ef952769bacec09c09ff5bf426e07fdc94478c37955681885b", size = 193134 }, + { url = "https://files.pythonhosted.org/packages/36/22/5f9760b135bdefb8cf8d663890756136754db03214f929b73185dfa33f05/levenshtein-0.26.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33e2517e8d3c221de2d1183f400aed64211fcfc77077b291ed9f3bb64f141cdc", size = 162266 }, + { url = "https://files.pythonhosted.org/packages/11/50/6b1a5f3600caae40db0928f6775d7efc62c13dec2407d3d540bc4afdb72c/levenshtein-0.26.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9092b622765c7649dd1d8af0f43354723dd6f4e570ac079ffd90b41033957438", size = 246339 }, + { url = "https://files.pythonhosted.org/packages/26/eb/ede282fcb495570898b39a0d2f21bbc9be5587d604c93a518ece80f3e7dc/levenshtein-0.26.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:fc16796c85d7d8b259881d59cc8b5e22e940901928c2ff6924b2c967924e8a0b", size = 1077937 }, + { url = "https://files.pythonhosted.org/packages/35/41/eebe1c4a75f592d9bdc3c2595418f083bcad747e0aec52a1a9ffaae93f5c/levenshtein-0.26.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4370733967f5994ceeed8dc211089bedd45832ee688cecea17bfd35a9eb22b9", size = 1330607 }, + { url = "https://files.pythonhosted.org/packages/12/8e/4d34b1857adfd69c2a72d84bca1b8538d4cfaaf6fddd8599573f4281a9d1/levenshtein-0.26.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3535ecfd88c9b283976b5bc61265855f59bba361881e92ed2b5367b6990c93fe", size = 1197505 }, + { url = "https://files.pythonhosted.org/packages/c0/7b/6afcda1b0a0622cedaa4f7a5b3507c2384a7358fc051ccf619e5d2453bf2/levenshtein-0.26.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:90236e93d98bdfd708883a6767826fafd976dac8af8fc4a0fb423d4fa08e1bf0", size = 1352832 }, + { url = "https://files.pythonhosted.org/packages/21/5e/0ed4e7b5c820b6bc40e2c391633292c3666400339042a3d306f0dc8fdcb4/levenshtein-0.26.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:04b7cabb82edf566b1579b3ed60aac0eec116655af75a3c551fee8754ffce2ea", size = 1135970 }, + { url = "https://files.pythonhosted.org/packages/c9/91/3ff1abacb58642749dfd130ad855370e01b9c7aeaa73801964361f6e355f/levenshtein-0.26.1-cp312-cp312-win32.whl", hash = "sha256:ae382af8c76f6d2a040c0d9ca978baf461702ceb3f79a0a3f6da8d596a484c5b", size = 87599 }, + { url = "https://files.pythonhosted.org/packages/7d/f9/727f3ba7843a3fb2a0f3db825358beea2a52bc96258874ee80cb2e5ecabb/levenshtein-0.26.1-cp312-cp312-win_amd64.whl", hash = "sha256:fd091209798cfdce53746f5769987b4108fe941c54fb2e058c016ffc47872918", size = 98809 }, + { url = "https://files.pythonhosted.org/packages/d4/f4/f87f19222d279dbac429b9bc7ccae271d900fd9c48a581b8bc180ba6cd09/levenshtein-0.26.1-cp312-cp312-win_arm64.whl", hash = "sha256:7e82f2ea44a81ad6b30d92a110e04cd3c8c7c6034b629aca30a3067fa174ae89", size = 88227 }, + { url = "https://files.pythonhosted.org/packages/7e/d6/b4b522b94d7b387c023d22944590befc0ac6b766ac6d197afd879ddd77fc/levenshtein-0.26.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:790374a9f5d2cbdb30ee780403a62e59bef51453ac020668c1564d1e43438f0e", size = 175836 }, + { url = "https://files.pythonhosted.org/packages/25/76/06d1e26a8e6d0de68ef4a157dd57f6b342413c03550309e4aa095a453b28/levenshtein-0.26.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7b05c0415c386d00efda83d48db9db68edd02878d6dbc6df01194f12062be1bb", size = 157036 }, + { url = "https://files.pythonhosted.org/packages/7e/23/21209a9e96b878aede3bea104533866762ba621e36fc344aa080db5feb02/levenshtein-0.26.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3114586032361722ddededf28401ce5baf1cf617f9f49fb86b8766a45a423ff", size = 153326 }, + { url = "https://files.pythonhosted.org/packages/06/38/9fc68685fffd8863b13864552eba8f3eb6a82a4dc558bf2c6553c2347d6c/levenshtein-0.26.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2532f8a13b68bf09f152d906f118a88da2063da22f44c90e904b142b0a53d534", size = 183693 }, + { url = "https://files.pythonhosted.org/packages/f6/82/ccd7bdd7d431329da025e649c63b731df44f8cf31b957e269ae1c1dc9a8e/levenshtein-0.26.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:219c30be6aa734bf927188d1208b7d78d202a3eb017b1c5f01ab2034d2d4ccca", size = 190581 }, + { url = "https://files.pythonhosted.org/packages/6e/c5/57f90b4aea1f89f853872b27a5a5dbce37b89ffeae42c02060b3e82038b2/levenshtein-0.26.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397e245e77f87836308bd56305bba630010cd8298c34c4c44bd94990cdb3b7b1", size = 162446 }, + { url = "https://files.pythonhosted.org/packages/fc/da/df6acca738921f896ce2d178821be866b43a583f85e2d1de63a4f8f78080/levenshtein-0.26.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeff6ea3576f72e26901544c6c55c72a7b79b9983b6f913cba0e9edbf2f87a97", size = 247123 }, + { url = "https://files.pythonhosted.org/packages/22/fb/f44a4c0d7784ccd32e4166714fea61e50f62b232162ae16332f45cb55ab2/levenshtein-0.26.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a19862e3539a697df722a08793994e334cd12791e8144851e8a1dee95a17ff63", size = 1077437 }, + { url = "https://files.pythonhosted.org/packages/f0/5e/d9b9e7daa13cc7e2184a3c2422bb847f05d354ce15ba113b20d83e9ab366/levenshtein-0.26.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:dc3b5a64f57c3c078d58b1e447f7d68cad7ae1b23abe689215d03fc434f8f176", size = 1330362 }, + { url = "https://files.pythonhosted.org/packages/bf/67/480d85bb516798014a6849be0225b246f35df4b54499c348c9c9e311f936/levenshtein-0.26.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bb6c7347424a91317c5e1b68041677e4c8ed3e7823b5bbaedb95bffb3c3497ea", size = 1198721 }, + { url = "https://files.pythonhosted.org/packages/9a/7d/889ff7d86903b6545665655627113d263c88c6d596c68fb09a640ee4f0a7/levenshtein-0.26.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b817376de4195a207cc0e4ca37754c0e1e1078c2a2d35a6ae502afde87212f9e", size = 1351820 }, + { url = "https://files.pythonhosted.org/packages/b9/29/cd42273150f08c200ed2d1879486d73502ee35265f162a77952f101d93a0/levenshtein-0.26.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7b50c3620ff47c9887debbb4c154aaaac3e46be7fc2e5789ee8dbe128bce6a17", size = 1135747 }, + { url = "https://files.pythonhosted.org/packages/1d/90/cbcfa3dd86023e82036662a19fec2fcb48782d3f9fa322d44dc898d95a5d/levenshtein-0.26.1-cp313-cp313-win32.whl", hash = "sha256:9fb859da90262eb474c190b3ca1e61dee83add022c676520f5c05fdd60df902a", size = 87318 }, + { url = "https://files.pythonhosted.org/packages/83/73/372edebc79fd09a8b2382cf1244d279ada5b795124f1e1c4fc73d9fbb00f/levenshtein-0.26.1-cp313-cp313-win_amd64.whl", hash = "sha256:8adcc90e3a5bfb0a463581d85e599d950fe3c2938ac6247b29388b64997f6e2d", size = 98418 }, + { url = "https://files.pythonhosted.org/packages/b2/6d/f0160ea5a7bb7a62b3b3d56e9fc5024b440cb59555a90be2347abf2e7888/levenshtein-0.26.1-cp313-cp313-win_arm64.whl", hash = "sha256:c2599407e029865dc66d210b8804c7768cbdbf60f061d993bb488d5242b0b73e", size = 87792 }, + { url = "https://files.pythonhosted.org/packages/c9/40/11a601baf1731d6b6927890bb7107f6cf77357dec8a22f269cd8f4ab8631/levenshtein-0.26.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6cf8f1efaf90ca585640c5d418c30b7d66d9ac215cee114593957161f63acde0", size = 172550 }, + { url = "https://files.pythonhosted.org/packages/74/1c/070757904b9fb4dfddaf9f43da8e8d9fb6feabd660631cc9e4cb49364d2b/levenshtein-0.26.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d5b2953978b8c158dd5cd93af8216a5cfddbf9de66cf5481c2955f44bb20767a", size = 154546 }, + { url = "https://files.pythonhosted.org/packages/31/7e/ef5538895aa96d6f59b5a6ed3c40c3db3b1b0df45807bd23eae250f380b8/levenshtein-0.26.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b952b3732c4631c49917d4b15d78cb4a2aa006c1d5c12e2a23ba8e18a307a055", size = 152897 }, + { url = "https://files.pythonhosted.org/packages/94/65/28fb5c59871a673f93e72c00c33c43bcc27eff6f9be5e515252e6da28a7f/levenshtein-0.26.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07227281e12071168e6ae59238918a56d2a0682e529f747b5431664f302c0b42", size = 160411 }, + { url = "https://files.pythonhosted.org/packages/4c/c7/b8fe968f92ed672cd346d38f4077586eb7ff63bade2e8d7c93a9259573c4/levenshtein-0.26.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8191241cd8934feaf4d05d0cc0e5e72877cbb17c53bbf8c92af9f1aedaa247e9", size = 247483 }, + { url = "https://files.pythonhosted.org/packages/f3/98/c119974fdce4808afdf3622230759c871bc4c73287cf34b338db2be936b8/levenshtein-0.26.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9e70d7ee157a9b698c73014f6e2b160830e7d2d64d2e342fefc3079af3c356fc", size = 95854 }, +] + [[package]] name = "lxml" version = "5.3.0" @@ -1617,6 +1696,80 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/74/ab/df8d889fd01139db68ae9e5cb5c8f0ea016823559a6ecb427582d52b07dc/qrcode-8.0-py3-none-any.whl", hash = "sha256:9fc05f03305ad27a709eb742cf3097fa19e6f6f93bb9e2f039c0979190f6f1b1", size = 45710 }, ] +[[package]] +name = "rapidfuzz" +version = "3.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/aa/25e5a20131369d82c7b8288c99c2c3011ec47a3f5953ccc9cb8145720be5/rapidfuzz-3.11.0.tar.gz", hash = "sha256:a53ca4d3f52f00b393fab9b5913c5bafb9afc27d030c8a1db1283da6917a860f", size = 57983000 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/70/820ebf9eb22ad97b9e0bb9fd1ad8c6be4c8db5a0974d12ce27b5c9a30db0/rapidfuzz-3.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eb8a54543d16ab1b69e2c5ed96cabbff16db044a50eddfc028000138ca9ddf33", size = 1954240 }, + { url = "https://files.pythonhosted.org/packages/41/bc/e39abdc28160d8147ccab0aa922a29be50529dcf149615a68a324ff6f9b1/rapidfuzz-3.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:231c8b2efbd7f8d2ecd1ae900363ba168b8870644bb8f2b5aa96e4a7573bde19", size = 1427139 }, + { url = "https://files.pythonhosted.org/packages/b6/2d/19b8e5d80257b13d73ba994552b78a69ac2ed70f1de716f1b02fcb84d09c/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54e7f442fb9cca81e9df32333fb075ef729052bcabe05b0afc0441f462299114", size = 1419602 }, + { url = "https://files.pythonhosted.org/packages/8c/82/1fc80cc531ec712872025c19118d78eb23aff09c7144b380c2c4b544b0d1/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:906f1f2a1b91c06599b3dd1be207449c5d4fc7bd1e1fa2f6aef161ea6223f165", size = 5635370 }, + { url = "https://files.pythonhosted.org/packages/3c/5c/007b90af25f98e301b5f7a095059b09f602701443d555724c9226a45514c/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed59044aea9eb6c663112170f2399b040d5d7b162828b141f2673e822093fa8", size = 1680848 }, + { url = "https://files.pythonhosted.org/packages/01/04/e481530eff5d1cf337b86a3095dd4de0b758c37291e51eb0d8c4f7d49719/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cb1965a28b0fa64abdee130c788a0bc0bb3cf9ef7e3a70bf055c086c14a3d7e", size = 1682131 }, + { url = "https://files.pythonhosted.org/packages/10/15/b0ec18edfe6146d8915679644ab7584cd0165724d6a53bcc43bd59f8edb5/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b488b244931d0291412917e6e46ee9f6a14376625e150056fe7c4426ef28225", size = 3134097 }, + { url = "https://files.pythonhosted.org/packages/8b/0e/cf0a5d62977381bca981fc171fd6c85dc52ca1239eaacf9c1d38978c5866/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f0ba13557fec9d5ffc0a22826754a7457cc77f1b25145be10b7bb1d143ce84c6", size = 2332928 }, + { url = "https://files.pythonhosted.org/packages/dc/71/568d383eb36586c9e7e13f1327203e2be0938e5ff070c1fa2a99b418808e/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3871fa7dfcef00bad3c7e8ae8d8fd58089bad6fb21f608d2bf42832267ca9663", size = 6940409 }, + { url = "https://files.pythonhosted.org/packages/ba/23/02972657d69e6d3aae2cdbd67debad080410ff9ef8849d8eab5e580a48a5/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:b2669eafee38c5884a6e7cc9769d25c19428549dcdf57de8541cf9e82822e7db", size = 2715928 }, + { url = "https://files.pythonhosted.org/packages/17/17/d964d770faa4e25e125618c00e31607cf8ce639d518fc29d200edf06cfda/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ffa1bb0e26297b0f22881b219ffc82a33a3c84ce6174a9d69406239b14575bd5", size = 3265078 }, + { url = "https://files.pythonhosted.org/packages/bc/13/a117412b1e4ed0bb23b9891a45a59812d96fde8c076b8b8b828aa7ca3710/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:45b15b8a118856ac9caac6877f70f38b8a0d310475d50bc814698659eabc1cdb", size = 4169215 }, + { url = "https://files.pythonhosted.org/packages/9f/0d/89ef496aedf885db4bfe7f46ac6727666afe0d9d8ca5b4f9c7cc8eef0378/rapidfuzz-3.11.0-cp310-cp310-win32.whl", hash = "sha256:22033677982b9c4c49676f215b794b0404073f8974f98739cb7234e4a9ade9ad", size = 1841736 }, + { url = "https://files.pythonhosted.org/packages/47/9a/69019f4e9c8a42e4aca0169dbae71602aba4e0fa4c5e84515f3ed682e59a/rapidfuzz-3.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:be15496e7244361ff0efcd86e52559bacda9cd975eccf19426a0025f9547c792", size = 1614955 }, + { url = "https://files.pythonhosted.org/packages/37/65/6fb036e39d175299ce44e5186ee2d08b9ea02d732ed6dbd70280f63b4eba/rapidfuzz-3.11.0-cp310-cp310-win_arm64.whl", hash = "sha256:714a7ba31ba46b64d30fccfe95f8013ea41a2e6237ba11a805a27cdd3bce2573", size = 863543 }, + { url = "https://files.pythonhosted.org/packages/40/ac/9ca008834104ad138fbfe2d7ae4443ada55e00c4eb4272d288897e8763b8/rapidfuzz-3.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8724a978f8af7059c5323d523870bf272a097478e1471295511cf58b2642ff83", size = 1955019 }, + { url = "https://files.pythonhosted.org/packages/4c/55/d026c01c9312c9c2a413679052a9bb884743fc5655e59339116d83a2125b/rapidfuzz-3.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b63cb1f2eb371ef20fb155e95efd96e060147bdd4ab9fc400c97325dfee9fe1", size = 1427753 }, + { url = "https://files.pythonhosted.org/packages/d1/a0/5f3fae81dd1efdf47da19641e321ae84b4f49a5a7b2ab3ff78bd04a0ae7f/rapidfuzz-3.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82497f244aac10b20710448645f347d862364cc4f7d8b9ba14bd66b5ce4dec18", size = 1411472 }, + { url = "https://files.pythonhosted.org/packages/3c/3f/770b0fca00faf42983fe21fbd379f429dc2600c58d7015f969fb1f73c1db/rapidfuzz-3.11.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:339607394941801e6e3f6c1ecd413a36e18454e7136ed1161388de674f47f9d9", size = 5614973 }, + { url = "https://files.pythonhosted.org/packages/08/6f/e3df1c41adf27f4b8a95c9de947ed49e7311a676cd05bdd62a17bb1f21ec/rapidfuzz-3.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84819390a36d6166cec706b9d8f0941f115f700b7faecab5a7e22fc367408bc3", size = 1665667 }, + { url = "https://files.pythonhosted.org/packages/1a/9b/6c91b98dc70270c35913f359c17e30d4185c83663c4721363540f4c03016/rapidfuzz-3.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eea8d9e20632d68f653455265b18c35f90965e26f30d4d92f831899d6682149b", size = 1676166 }, + { url = "https://files.pythonhosted.org/packages/59/9d/eec7a1bfd3566fb17617b41bfb19556c483241d6864eea3c01b88efe5459/rapidfuzz-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b659e1e2ea2784a9a397075a7fc395bfa4fe66424042161c4bcaf6e4f637b38", size = 3130890 }, + { url = "https://files.pythonhosted.org/packages/26/7c/0a4bb5fbb03a362ea3e1409515d3ae641d9bc869c1375d97d8c47e369cc0/rapidfuzz-3.11.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1315cd2a351144572e31fe3df68340d4b83ddec0af8b2e207cd32930c6acd037", size = 2339850 }, + { url = "https://files.pythonhosted.org/packages/f8/c1/6b839db83caaa47721398b76390a3145202beb108fa433e842879b497439/rapidfuzz-3.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a7743cca45b4684c54407e8638f6d07b910d8d811347b9d42ff21262c7c23245", size = 6941921 }, + { url = "https://files.pythonhosted.org/packages/cc/c9/eaac43bb5e44f3594afddbbdb1a28d7bc0bcb69f93ed9a2ef0c949a48fb2/rapidfuzz-3.11.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:5bb636b0150daa6d3331b738f7c0f8b25eadc47f04a40e5c23c4bfb4c4e20ae3", size = 2717551 }, + { url = "https://files.pythonhosted.org/packages/ef/d3/06ca5ee6b7f030f6527ea1e80fe9a4ab3597e86bc783574e3fc2b05a5265/rapidfuzz-3.11.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:42f4dd264ada7a9aa0805ea0da776dc063533917773cf2df5217f14eb4429eae", size = 3259550 }, + { url = "https://files.pythonhosted.org/packages/74/d8/094e75ee0424cce329901a0ff98c1821fd5d9dbc11bcdc9a3fddd2a09c4c/rapidfuzz-3.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:51f24cb39e64256221e6952f22545b8ce21cacd59c0d3e367225da8fc4b868d8", size = 4173546 }, + { url = "https://files.pythonhosted.org/packages/d7/81/f263059e3d9f11b076751ac7ef4eba303fa7f11e32155658953f1697c274/rapidfuzz-3.11.0-cp311-cp311-win32.whl", hash = "sha256:aaf391fb6715866bc14681c76dc0308f46877f7c06f61d62cc993b79fc3c4a2a", size = 1842172 }, + { url = "https://files.pythonhosted.org/packages/33/04/dc42c787f02505a4ca0a961172e8353ceee74ea378b795f3e49686e944b7/rapidfuzz-3.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:ebadd5b8624d8ad503e505a99b8eb26fe3ea9f8e9c2234e805a27b269e585842", size = 1621122 }, + { url = "https://files.pythonhosted.org/packages/4e/0f/461e709bd641922a32bc034976963acbb11d8cf0af28b526f3f35ae07975/rapidfuzz-3.11.0-cp311-cp311-win_arm64.whl", hash = "sha256:d895998fec712544c13cfe833890e0226585cf0391dd3948412441d5d68a2b8c", size = 864792 }, + { url = "https://files.pythonhosted.org/packages/c5/54/954ae2dc7dcb53f5f0953379a4a175d9c2f5e393656ab042843e53780d32/rapidfuzz-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f382fec4a7891d66fb7163c90754454030bb9200a13f82ee7860b6359f3f2fa8", size = 1938694 }, + { url = "https://files.pythonhosted.org/packages/f9/74/4682d3370821db5374c0f192d1e4123598190cb53d88936016187f80f154/rapidfuzz-3.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dfaefe08af2a928e72344c800dcbaf6508e86a4ed481e28355e8d4b6a6a5230e", size = 1423836 }, + { url = "https://files.pythonhosted.org/packages/e7/78/ce3d72767e186a9deca30dccb5096cfb03ec49e8e3abf2836ab10d1b4f74/rapidfuzz-3.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92ebb7c12f682b5906ed98429f48a3dd80dd0f9721de30c97a01473d1a346576", size = 1393199 }, + { url = "https://files.pythonhosted.org/packages/3c/21/26bdbe846726ff7793789da07e155699cafa3ba3ed3bee86d472b4762121/rapidfuzz-3.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a1b3ebc62d4bcdfdeba110944a25ab40916d5383c5e57e7c4a8dc0b6c17211a", size = 5543400 }, + { url = "https://files.pythonhosted.org/packages/c9/d5/78e922cfbfc67011ecee9f6c2fd630dee68650d23b9ce78316386a3d8c88/rapidfuzz-3.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c6d7fea39cb33e71de86397d38bf7ff1a6273e40367f31d05761662ffda49e4", size = 1642855 }, + { url = "https://files.pythonhosted.org/packages/df/bb/dcf084c03c46968c3fbc52a33f2a725e0b8bb54ed714f0866c7dad747358/rapidfuzz-3.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99aebef8268f2bc0b445b5640fd3312e080bd17efd3fbae4486b20ac00466308", size = 1669853 }, + { url = "https://files.pythonhosted.org/packages/ec/3a/9aa7a2c5b611e8d465e82c1d5f8278be7335769165f68f3ffc5a169f4a23/rapidfuzz-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4469307f464ae3089acf3210b8fc279110d26d10f79e576f385a98f4429f7d97", size = 3129941 }, + { url = "https://files.pythonhosted.org/packages/d3/15/2bbab50a2634b25593e36241ab9629be253b8c6ea28a34ba6b856bfea661/rapidfuzz-3.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:eb97c53112b593f89a90b4f6218635a9d1eea1d7f9521a3b7d24864228bbc0aa", size = 2302199 }, + { url = "https://files.pythonhosted.org/packages/c6/7c/e3ed92b89c657348c41708fe3b856ebc982c4b220b47299bdef8da374b20/rapidfuzz-3.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ef8937dae823b889c0273dfa0f0f6c46a3658ac0d851349c464d1b00e7ff4252", size = 6904702 }, + { url = "https://files.pythonhosted.org/packages/bd/4f/eed77097068bffb692d6389ae19a531c52a896275e9f5c00566207767537/rapidfuzz-3.11.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d95f9e9f3777b96241d8a00d6377cc9c716981d828b5091082d0fe3a2924b43e", size = 2679287 }, + { url = "https://files.pythonhosted.org/packages/1f/dc/d2d5dcd5b33a5b394485c67aa13674c8345826af8d3ba0702c06ab2f6430/rapidfuzz-3.11.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:b1d67d67f89e4e013a5295e7523bc34a7a96f2dba5dd812c7c8cb65d113cbf28", size = 3224946 }, + { url = "https://files.pythonhosted.org/packages/8f/af/17c0c29ded64e464e626dd43fc2e3028c1fa929d10e8201fb2aec654e5b3/rapidfuzz-3.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d994cf27e2f874069884d9bddf0864f9b90ad201fcc9cb2f5b82bacc17c8d5f2", size = 4144678 }, + { url = "https://files.pythonhosted.org/packages/66/5d/5dc02c87d9a0e64e0abd728d3255ddce8475e06b6be3f732a460f0a360c9/rapidfuzz-3.11.0-cp312-cp312-win32.whl", hash = "sha256:ba26d87fe7fcb56c4a53b549a9e0e9143f6b0df56d35fe6ad800c902447acd5b", size = 1824882 }, + { url = "https://files.pythonhosted.org/packages/b7/da/a37d532cbefd7242191abf18f438b315bf5c72d742f78414a8ec1b7396cf/rapidfuzz-3.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:b1f7efdd7b7adb32102c2fa481ad6f11923e2deb191f651274be559d56fc913b", size = 1606419 }, + { url = "https://files.pythonhosted.org/packages/92/d0/1406d6e110aff87303e98f47adc5e76ef2e69d51cdd08b2d463520158cab/rapidfuzz-3.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:ed78c8e94f57b44292c1a0350f580e18d3a3c5c0800e253f1583580c1b417ad2", size = 858655 }, + { url = "https://files.pythonhosted.org/packages/8a/30/984f1013d28b88304386c8e70b5d63db4765c28be8d9ef68d177c9addc77/rapidfuzz-3.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e60814edd0c9b511b5f377d48b9782b88cfe8be07a98f99973669299c8bb318a", size = 1931354 }, + { url = "https://files.pythonhosted.org/packages/a4/8a/41d4f95c5742a8a47c0e96c02957f72f8c34411cecde87fe371d5e09807e/rapidfuzz-3.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f28952da055dbfe75828891cd3c9abf0984edc8640573c18b48c14c68ca5e06", size = 1417918 }, + { url = "https://files.pythonhosted.org/packages/e3/26/031ac8366831da6afc5f25462196eab0e0caf9422c83c007307e23a6f010/rapidfuzz-3.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e8f93bc736020351a6f8e71666e1f486bb8bd5ce8112c443a30c77bfde0eb68", size = 1388327 }, + { url = "https://files.pythonhosted.org/packages/17/1b/927edcd3b540770d3d6d52fe079c6bffdb99e9dfa4b73585bee2a8bd6504/rapidfuzz-3.11.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76a4a11ba8f678c9e5876a7d465ab86def047a4fcc043617578368755d63a1bc", size = 5513214 }, + { url = "https://files.pythonhosted.org/packages/0d/a2/c1e4f35e7bfbbd97a665f8cd119d8bd4a085f1721366cd76582dc022131b/rapidfuzz-3.11.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc0e0d41ad8a056a9886bac91ff9d9978e54a244deb61c2972cc76b66752de9c", size = 1638560 }, + { url = "https://files.pythonhosted.org/packages/39/3f/6827972efddb1e357a0b6165ae9e310d7dc5c078af3023893365c212641b/rapidfuzz-3.11.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e8ea35f2419c7d56b3e75fbde2698766daedb374f20eea28ac9b1f668ef4f74", size = 1667185 }, + { url = "https://files.pythonhosted.org/packages/cc/5d/6902b93e1273e69ea087afd16e7504099bcb8d712a9f69cb649ea05ca7e1/rapidfuzz-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd340bbd025302276b5aa221dccfe43040c7babfc32f107c36ad783f2ffd8775", size = 3107466 }, + { url = "https://files.pythonhosted.org/packages/a6/02/bdb2048c9b8edf4cd82c2e8f6a8ed9af0fbdf91810ca2b36d1be6fc996d8/rapidfuzz-3.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:494eef2c68305ab75139034ea25328a04a548d297712d9cf887bf27c158c388b", size = 2302041 }, + { url = "https://files.pythonhosted.org/packages/12/91/0bbe51e3c15c02578487fd10a14692a40677ea974098d8d376bafd627a89/rapidfuzz-3.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5a167344c1d6db06915fb0225592afdc24d8bafaaf02de07d4788ddd37f4bc2f", size = 6899969 }, + { url = "https://files.pythonhosted.org/packages/27/9d/09b85adfd5829f60bd6dbe53ba66dad22f93a281d494a5638b5f20fb6a8a/rapidfuzz-3.11.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:8c7af25bda96ac799378ac8aba54a8ece732835c7b74cfc201b688a87ed11152", size = 2669022 }, + { url = "https://files.pythonhosted.org/packages/cb/07/6fb723963243335c3bf73925914b6998649d642eff550187454d5bb3d077/rapidfuzz-3.11.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d2a0f7e17f33e7890257367a1662b05fecaf56625f7dbb6446227aaa2b86448b", size = 3229475 }, + { url = "https://files.pythonhosted.org/packages/3a/8e/e9af6da2e235aa29ad2bb0a1fc2472b2949ed8d9ff8fb0f05b4bfbbf7675/rapidfuzz-3.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4d0d26c7172bdb64f86ee0765c5b26ea1dc45c52389175888ec073b9b28f4305", size = 4143861 }, + { url = "https://files.pythonhosted.org/packages/fd/d8/4677e36e958b4d95d039d254d597db9c020896c8130911dc36b136373b87/rapidfuzz-3.11.0-cp313-cp313-win32.whl", hash = "sha256:6ad02bab756751c90fa27f3069d7b12146613061341459abf55f8190d899649f", size = 1822624 }, + { url = "https://files.pythonhosted.org/packages/e8/97/1c782140e688ea2c3337d94516c635c575aa39fe62782fd53ad5d2119df4/rapidfuzz-3.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:b1472986fd9c5d318399a01a0881f4a0bf4950264131bb8e2deba9df6d8c362b", size = 1604273 }, + { url = "https://files.pythonhosted.org/packages/a6/83/8b713d50bec947e945a79be47f772484307fc876c426fb26c6f369098389/rapidfuzz-3.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:c408f09649cbff8da76f8d3ad878b64ba7f7abdad1471efb293d2c075e80c822", size = 857385 }, + { url = "https://files.pythonhosted.org/packages/30/5a/8ac67667663d24cc4d4b76f63783e58ef03e4d4843d02dab6b2f8470ea5e/rapidfuzz-3.11.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f06e3c4c0a8badfc4910b9fd15beb1ad8f3b8fafa8ea82c023e5e607b66a78e4", size = 1853100 }, + { url = "https://files.pythonhosted.org/packages/dc/72/b043c26e93fb1bc5dfab1e5dd0f8d2f6135c2aa48e6db0660d4ecc5b157a/rapidfuzz-3.11.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fe7aaf5a54821d340d21412f7f6e6272a9b17a0cbafc1d68f77f2fc11009dcd5", size = 1361961 }, + { url = "https://files.pythonhosted.org/packages/5c/4a/29916c0dd853d22ef7b988af43f4e34d327581e16f60b4c9b0f229fa306c/rapidfuzz-3.11.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25398d9ac7294e99876a3027ffc52c6bebeb2d702b1895af6ae9c541ee676702", size = 1354313 }, + { url = "https://files.pythonhosted.org/packages/41/39/f352af4ede7faeeea20bae2537f1fa60c3bbbf2696f0f2f3dda696745239/rapidfuzz-3.11.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a52eea839e4bdc72c5e60a444d26004da00bb5bc6301e99b3dde18212e41465", size = 5478019 }, + { url = "https://files.pythonhosted.org/packages/99/8e/86f8a11ac0edda63ff5314d992aa1576fff5d8233f4310d46a6bb0551122/rapidfuzz-3.11.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c87319b0ab9d269ab84f6453601fd49b35d9e4a601bbaef43743f26fabf496c", size = 3056881 }, + { url = "https://files.pythonhosted.org/packages/98/53/222dceb24a83c7d7d76086b6d5bfd3d6aa9988ea73d356d287b5c437c0d5/rapidfuzz-3.11.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3048c6ed29d693fba7d2a7caf165f5e0bb2b9743a0989012a98a47b975355cca", size = 1543944 }, +] + [[package]] name = "requests" version = "2.32.3"