mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-09-22 00:52:42 -05:00
Chore(deps): Bump the small-changes group across 1 directory with 3 updates (#10880)
* Chore(deps): Bump the small-changes group across 1 directory with 3 updates Bumps the small-changes group with 3 updates in the / directory: [ocrmypdf](https://github.com/ocrmypdf/OCRmyPDF), [mkdocs-material](https://github.com/squidfunk/mkdocs-material) and [ruff](https://github.com/astral-sh/ruff). Updates `ocrmypdf` from 16.10.4 to 16.11.0 - [Release notes](https://github.com/ocrmypdf/OCRmyPDF/releases) - [Changelog](https://github.com/ocrmypdf/OCRmyPDF/blob/main/docs/release_notes.md) - [Commits](https://github.com/ocrmypdf/OCRmyPDF/compare/v16.10.4...v16.11.0) Updates `mkdocs-material` from 9.6.19 to 9.6.20 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.19...9.6.20) Updates `ruff` from 0.12.12 to 0.13.0 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.12.12...0.13.0) --- updated-dependencies: - dependency-name: ocrmypdf dependency-version: 16.11.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: small-changes - dependency-name: mkdocs-material dependency-version: 9.6.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: small-changes - dependency-name: ruff dependency-version: 0.13.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: small-changes ... Signed-off-by: dependabot[bot] <support@github.com> * Applies the new Ruff rule for unpacking --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Trenton H <797416+stumpylog@users.noreply.github.com>
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
repos:
|
repos:
|
||||||
# General hooks
|
# General hooks
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v5.0.0
|
rev: v6.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: check-docstring-first
|
- id: check-docstring-first
|
||||||
- id: check-json
|
- id: check-json
|
||||||
@@ -49,7 +49,7 @@ repos:
|
|||||||
- 'prettier-plugin-organize-imports@4.1.0'
|
- 'prettier-plugin-organize-imports@4.1.0'
|
||||||
# Python hooks
|
# Python hooks
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.12.2
|
rev: v0.13.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff-check
|
- id: ruff-check
|
||||||
- id: ruff-format
|
- id: ruff-format
|
||||||
@@ -72,7 +72,7 @@ repos:
|
|||||||
args:
|
args:
|
||||||
- "--tab"
|
- "--tab"
|
||||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||||
rev: "v0.10.0.1"
|
rev: "v0.11.0.1"
|
||||||
hooks:
|
hooks:
|
||||||
- id: shellcheck
|
- id: shellcheck
|
||||||
- repo: https://github.com/google/yamlfmt
|
- repo: https://github.com/google/yamlfmt
|
||||||
|
@@ -50,7 +50,7 @@ dependencies = [
|
|||||||
"jinja2~=3.1.5",
|
"jinja2~=3.1.5",
|
||||||
"langdetect~=1.0.9",
|
"langdetect~=1.0.9",
|
||||||
"nltk~=3.9.1",
|
"nltk~=3.9.1",
|
||||||
"ocrmypdf~=16.10.0",
|
"ocrmypdf~=16.11.0",
|
||||||
"pathvalidate~=3.3.1",
|
"pathvalidate~=3.3.1",
|
||||||
"pdf2image~=1.17.0",
|
"pdf2image~=1.17.0",
|
||||||
"psycopg-pool",
|
"psycopg-pool",
|
||||||
@@ -116,7 +116,7 @@ testing = [
|
|||||||
lint = [
|
lint = [
|
||||||
"pre-commit~=4.3.0",
|
"pre-commit~=4.3.0",
|
||||||
"pre-commit-uv~=4.1.3",
|
"pre-commit-uv~=4.1.3",
|
||||||
"ruff~=0.12.2",
|
"ruff~=0.13.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
typing = [
|
typing = [
|
||||||
|
@@ -17,7 +17,7 @@ def move_sender_strings_to_sender_model(apps, schema_editor):
|
|||||||
if document.sender:
|
if document.sender:
|
||||||
(
|
(
|
||||||
DOCUMENT_SENDER_MAP[document.pk],
|
DOCUMENT_SENDER_MAP[document.pk],
|
||||||
created,
|
_,
|
||||||
) = sender_model.objects.get_or_create(
|
) = sender_model.objects.get_or_create(
|
||||||
name=document.sender,
|
name=document.sender,
|
||||||
defaults={"slug": slugify(document.sender)},
|
defaults={"slug": slugify(document.sender)},
|
||||||
|
@@ -839,7 +839,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
|
|||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
m.assert_called()
|
m.assert_called()
|
||||||
args, kwargs = m.call_args
|
_, kwargs = m.call_args
|
||||||
self.assertEqual(kwargs["merge"], False)
|
self.assertEqual(kwargs["merge"], False)
|
||||||
|
|
||||||
response = self.client.post(
|
response = self.client.post(
|
||||||
@@ -857,7 +857,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
|
|||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
m.assert_called()
|
m.assert_called()
|
||||||
args, kwargs = m.call_args
|
_, kwargs = m.call_args
|
||||||
self.assertEqual(kwargs["merge"], True)
|
self.assertEqual(kwargs["merge"], True)
|
||||||
|
|
||||||
@mock.patch("documents.serialisers.bulk_edit.set_storage_path")
|
@mock.patch("documents.serialisers.bulk_edit.set_storage_path")
|
||||||
|
@@ -1528,7 +1528,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
|||||||
|
|
||||||
input_doc, overrides = self.get_last_consume_delay_call_args()
|
input_doc, overrides = self.get_last_consume_delay_call_args()
|
||||||
|
|
||||||
new_overrides, msg = run_workflows(
|
new_overrides, _ = run_workflows(
|
||||||
trigger_type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
|
trigger_type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
|
||||||
document=input_doc,
|
document=input_doc,
|
||||||
logging_group=None,
|
logging_group=None,
|
||||||
@@ -1557,7 +1557,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
|||||||
|
|
||||||
self.consume_file_mock.assert_called_once()
|
self.consume_file_mock.assert_called_once()
|
||||||
|
|
||||||
input_doc, overrides = self.get_last_consume_delay_call_args()
|
input_doc, _ = self.get_last_consume_delay_call_args()
|
||||||
|
|
||||||
self.assertEqual(input_doc.source, WorkflowTrigger.DocumentSourceChoices.WEB_UI)
|
self.assertEqual(input_doc.source, WorkflowTrigger.DocumentSourceChoices.WEB_UI)
|
||||||
|
|
||||||
|
@@ -74,7 +74,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(Document.objects.filter(correspondent=self.c2).count(), 3)
|
self.assertEqual(Document.objects.filter(correspondent=self.c2).count(), 3)
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id])
|
||||||
|
|
||||||
def test_unset_correspondent(self):
|
def test_unset_correspondent(self):
|
||||||
@@ -82,7 +82,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
bulk_edit.set_correspondent([self.doc1.id, self.doc2.id, self.doc3.id], None)
|
bulk_edit.set_correspondent([self.doc1.id, self.doc2.id, self.doc3.id], None)
|
||||||
self.assertEqual(Document.objects.filter(correspondent=self.c2).count(), 0)
|
self.assertEqual(Document.objects.filter(correspondent=self.c2).count(), 0)
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id])
|
||||||
|
|
||||||
def test_set_document_type(self):
|
def test_set_document_type(self):
|
||||||
@@ -93,7 +93,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(Document.objects.filter(document_type=self.dt2).count(), 3)
|
self.assertEqual(Document.objects.filter(document_type=self.dt2).count(), 3)
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id])
|
||||||
|
|
||||||
def test_unset_document_type(self):
|
def test_unset_document_type(self):
|
||||||
@@ -101,7 +101,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
bulk_edit.set_document_type([self.doc1.id, self.doc2.id, self.doc3.id], None)
|
bulk_edit.set_document_type([self.doc1.id, self.doc2.id, self.doc3.id], None)
|
||||||
self.assertEqual(Document.objects.filter(document_type=self.dt2).count(), 0)
|
self.assertEqual(Document.objects.filter(document_type=self.dt2).count(), 0)
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id])
|
||||||
|
|
||||||
def test_set_document_storage_path(self):
|
def test_set_document_storage_path(self):
|
||||||
@@ -123,7 +123,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
self.assertEqual(Document.objects.filter(storage_path=None).count(), 4)
|
self.assertEqual(Document.objects.filter(storage_path=None).count(), 4)
|
||||||
|
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
|
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id])
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
self.assertEqual(Document.objects.filter(storage_path=None).count(), 5)
|
self.assertEqual(Document.objects.filter(storage_path=None).count(), 5)
|
||||||
|
|
||||||
self.async_task.assert_called()
|
self.async_task.assert_called()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
|
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id])
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(Document.objects.filter(tags__id=self.t1.id).count(), 4)
|
self.assertEqual(Document.objects.filter(tags__id=self.t1.id).count(), 4)
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc3.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc3.id])
|
||||||
|
|
||||||
def test_remove_tag(self):
|
def test_remove_tag(self):
|
||||||
@@ -174,7 +174,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
bulk_edit.remove_tag([self.doc1.id, self.doc3.id, self.doc4.id], self.t1.id)
|
bulk_edit.remove_tag([self.doc1.id, self.doc3.id, self.doc4.id], self.t1.id)
|
||||||
self.assertEqual(Document.objects.filter(tags__id=self.t1.id).count(), 1)
|
self.assertEqual(Document.objects.filter(tags__id=self.t1.id).count(), 1)
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc4.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc4.id])
|
||||||
|
|
||||||
def test_modify_tags(self):
|
def test_modify_tags(self):
|
||||||
@@ -191,7 +191,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
self.assertCountEqual(list(self.doc3.tags.all()), [self.t2, tag_unrelated])
|
self.assertCountEqual(list(self.doc3.tags.all()), [self.t2, tag_unrelated])
|
||||||
|
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
# TODO: doc3 should not be affected, but the query for that is rather complicated
|
# TODO: doc3 should not be affected, but the query for that is rather complicated
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id])
|
||||||
|
|
||||||
@@ -248,7 +248,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id])
|
||||||
|
|
||||||
def test_modify_custom_fields_with_values(self):
|
def test_modify_custom_fields_with_values(self):
|
||||||
@@ -325,7 +325,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.async_task.assert_called_once()
|
self.async_task.assert_called_once()
|
||||||
args, kwargs = self.async_task.call_args
|
_, kwargs = self.async_task.call_args
|
||||||
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id])
|
self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id])
|
||||||
|
|
||||||
# removal of document link cf, should also remove symmetric link
|
# removal of document link cf, should also remove symmetric link
|
||||||
|
@@ -123,14 +123,14 @@ class TestRetagger(DirectoriesMixin, TestCase):
|
|||||||
|
|
||||||
def test_add_type(self):
|
def test_add_type(self):
|
||||||
call_command("document_retagger", "--document_type")
|
call_command("document_retagger", "--document_type")
|
||||||
d_first, d_second, d_unrelated, d_auto = self.get_updated_docs()
|
d_first, d_second, _, _ = self.get_updated_docs()
|
||||||
|
|
||||||
self.assertEqual(d_first.document_type, self.doctype_first)
|
self.assertEqual(d_first.document_type, self.doctype_first)
|
||||||
self.assertEqual(d_second.document_type, self.doctype_second)
|
self.assertEqual(d_second.document_type, self.doctype_second)
|
||||||
|
|
||||||
def test_add_correspondent(self):
|
def test_add_correspondent(self):
|
||||||
call_command("document_retagger", "--correspondent")
|
call_command("document_retagger", "--correspondent")
|
||||||
d_first, d_second, d_unrelated, d_auto = self.get_updated_docs()
|
d_first, d_second, _, _ = self.get_updated_docs()
|
||||||
|
|
||||||
self.assertEqual(d_first.correspondent, self.correspondent_first)
|
self.assertEqual(d_first.correspondent, self.correspondent_first)
|
||||||
self.assertEqual(d_second.correspondent, self.correspondent_second)
|
self.assertEqual(d_second.correspondent, self.correspondent_second)
|
||||||
@@ -160,7 +160,7 @@ class TestRetagger(DirectoriesMixin, TestCase):
|
|||||||
|
|
||||||
def test_add_tags_suggest(self):
|
def test_add_tags_suggest(self):
|
||||||
call_command("document_retagger", "--tags", "--suggest")
|
call_command("document_retagger", "--tags", "--suggest")
|
||||||
d_first, d_second, d_unrelated, d_auto = self.get_updated_docs()
|
d_first, d_second, _, d_auto = self.get_updated_docs()
|
||||||
|
|
||||||
self.assertEqual(d_first.tags.count(), 0)
|
self.assertEqual(d_first.tags.count(), 0)
|
||||||
self.assertEqual(d_second.tags.count(), 0)
|
self.assertEqual(d_second.tags.count(), 0)
|
||||||
@@ -168,14 +168,14 @@ class TestRetagger(DirectoriesMixin, TestCase):
|
|||||||
|
|
||||||
def test_add_type_suggest(self):
|
def test_add_type_suggest(self):
|
||||||
call_command("document_retagger", "--document_type", "--suggest")
|
call_command("document_retagger", "--document_type", "--suggest")
|
||||||
d_first, d_second, d_unrelated, d_auto = self.get_updated_docs()
|
d_first, d_second, _, _ = self.get_updated_docs()
|
||||||
|
|
||||||
self.assertIsNone(d_first.document_type)
|
self.assertIsNone(d_first.document_type)
|
||||||
self.assertIsNone(d_second.document_type)
|
self.assertIsNone(d_second.document_type)
|
||||||
|
|
||||||
def test_add_correspondent_suggest(self):
|
def test_add_correspondent_suggest(self):
|
||||||
call_command("document_retagger", "--correspondent", "--suggest")
|
call_command("document_retagger", "--correspondent", "--suggest")
|
||||||
d_first, d_second, d_unrelated, d_auto = self.get_updated_docs()
|
d_first, d_second, _, _ = self.get_updated_docs()
|
||||||
|
|
||||||
self.assertIsNone(d_first.correspondent)
|
self.assertIsNone(d_first.correspondent)
|
||||||
self.assertIsNone(d_second.correspondent)
|
self.assertIsNone(d_second.correspondent)
|
||||||
@@ -187,7 +187,7 @@ class TestRetagger(DirectoriesMixin, TestCase):
|
|||||||
"--suggest",
|
"--suggest",
|
||||||
"--base-url=http://localhost",
|
"--base-url=http://localhost",
|
||||||
)
|
)
|
||||||
d_first, d_second, d_unrelated, d_auto = self.get_updated_docs()
|
d_first, d_second, _, d_auto = self.get_updated_docs()
|
||||||
|
|
||||||
self.assertEqual(d_first.tags.count(), 0)
|
self.assertEqual(d_first.tags.count(), 0)
|
||||||
self.assertEqual(d_second.tags.count(), 0)
|
self.assertEqual(d_second.tags.count(), 0)
|
||||||
@@ -200,7 +200,7 @@ class TestRetagger(DirectoriesMixin, TestCase):
|
|||||||
"--suggest",
|
"--suggest",
|
||||||
"--base-url=http://localhost",
|
"--base-url=http://localhost",
|
||||||
)
|
)
|
||||||
d_first, d_second, d_unrelated, d_auto = self.get_updated_docs()
|
d_first, d_second, _, _ = self.get_updated_docs()
|
||||||
|
|
||||||
self.assertIsNone(d_first.document_type)
|
self.assertIsNone(d_first.document_type)
|
||||||
self.assertIsNone(d_second.document_type)
|
self.assertIsNone(d_second.document_type)
|
||||||
@@ -212,7 +212,7 @@ class TestRetagger(DirectoriesMixin, TestCase):
|
|||||||
"--suggest",
|
"--suggest",
|
||||||
"--base-url=http://localhost",
|
"--base-url=http://localhost",
|
||||||
)
|
)
|
||||||
d_first, d_second, d_unrelated, d_auto = self.get_updated_docs()
|
d_first, d_second, _, _ = self.get_updated_docs()
|
||||||
|
|
||||||
self.assertIsNone(d_first.correspondent)
|
self.assertIsNone(d_first.correspondent)
|
||||||
self.assertIsNone(d_second.correspondent)
|
self.assertIsNone(d_second.correspondent)
|
||||||
|
@@ -21,7 +21,7 @@ TEST_CHANNEL_LAYERS = {
|
|||||||
class TestWebSockets(TestCase):
|
class TestWebSockets(TestCase):
|
||||||
async def test_no_auth(self):
|
async def test_no_auth(self):
|
||||||
communicator = WebsocketCommunicator(application, "/ws/status/")
|
communicator = WebsocketCommunicator(application, "/ws/status/")
|
||||||
connected, subprotocol = await communicator.connect()
|
connected, _ = await communicator.connect()
|
||||||
self.assertFalse(connected)
|
self.assertFalse(connected)
|
||||||
await communicator.disconnect()
|
await communicator.disconnect()
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ class TestWebSockets(TestCase):
|
|||||||
_authenticated.return_value = True
|
_authenticated.return_value = True
|
||||||
|
|
||||||
communicator = WebsocketCommunicator(application, "/ws/status/")
|
communicator = WebsocketCommunicator(application, "/ws/status/")
|
||||||
connected, subprotocol = await communicator.connect()
|
connected, _ = await communicator.connect()
|
||||||
self.assertTrue(connected)
|
self.assertTrue(connected)
|
||||||
|
|
||||||
message = {"type": "status_update", "data": {"task_id": "test"}}
|
message = {"type": "status_update", "data": {"task_id": "test"}}
|
||||||
@@ -63,7 +63,7 @@ class TestWebSockets(TestCase):
|
|||||||
_authenticated.return_value = True
|
_authenticated.return_value = True
|
||||||
|
|
||||||
communicator = WebsocketCommunicator(application, "/ws/status/")
|
communicator = WebsocketCommunicator(application, "/ws/status/")
|
||||||
connected, subprotocol = await communicator.connect()
|
connected, _ = await communicator.connect()
|
||||||
self.assertTrue(connected)
|
self.assertTrue(connected)
|
||||||
|
|
||||||
await communicator.disconnect()
|
await communicator.disconnect()
|
||||||
@@ -73,7 +73,7 @@ class TestWebSockets(TestCase):
|
|||||||
_authenticated.return_value = True
|
_authenticated.return_value = True
|
||||||
|
|
||||||
communicator = WebsocketCommunicator(application, "/ws/status/")
|
communicator = WebsocketCommunicator(application, "/ws/status/")
|
||||||
connected, subprotocol = await communicator.connect()
|
connected, _ = await communicator.connect()
|
||||||
self.assertTrue(connected)
|
self.assertTrue(connected)
|
||||||
|
|
||||||
message = {"type": "status_update", "data": {"task_id": "test"}}
|
message = {"type": "status_update", "data": {"task_id": "test"}}
|
||||||
@@ -98,7 +98,7 @@ class TestWebSockets(TestCase):
|
|||||||
communicator.scope["user"].is_superuser = False
|
communicator.scope["user"].is_superuser = False
|
||||||
communicator.scope["user"].id = 1
|
communicator.scope["user"].id = 1
|
||||||
|
|
||||||
connected, subprotocol = await communicator.connect()
|
connected, _ = await communicator.connect()
|
||||||
self.assertTrue(connected)
|
self.assertTrue(connected)
|
||||||
|
|
||||||
# Test as owner
|
# Test as owner
|
||||||
@@ -141,7 +141,7 @@ class TestWebSockets(TestCase):
|
|||||||
_authenticated.return_value = True
|
_authenticated.return_value = True
|
||||||
|
|
||||||
communicator = WebsocketCommunicator(application, "/ws/status/")
|
communicator = WebsocketCommunicator(application, "/ws/status/")
|
||||||
connected, subprotocol = await communicator.connect()
|
connected, _ = await communicator.connect()
|
||||||
self.assertTrue(connected)
|
self.assertTrue(connected)
|
||||||
|
|
||||||
message = {"type": "documents_deleted", "data": {"documents": [1, 2, 3]}}
|
message = {"type": "documents_deleted", "data": {"documents": [1, 2, 3]}}
|
||||||
|
@@ -132,7 +132,7 @@ class RasterisedDocumentParser(DocumentParser):
|
|||||||
def get_dpi(self, image) -> int | None:
|
def get_dpi(self, image) -> int | None:
|
||||||
try:
|
try:
|
||||||
with Image.open(image) as im:
|
with Image.open(image) as im:
|
||||||
x, y = im.info["dpi"]
|
x, _ = im.info["dpi"]
|
||||||
return round(x)
|
return round(x)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.warning(f"Error while getting DPI from image {image}: {e}")
|
self.log.warning(f"Error while getting DPI from image {image}: {e}")
|
||||||
@@ -141,7 +141,7 @@ class RasterisedDocumentParser(DocumentParser):
|
|||||||
def calculate_a4_dpi(self, image) -> int | None:
|
def calculate_a4_dpi(self, image) -> int | None:
|
||||||
try:
|
try:
|
||||||
with Image.open(image) as im:
|
with Image.open(image) as im:
|
||||||
width, height = im.size
|
width, _ = im.size
|
||||||
# divide image width by A4 width (210mm) in inches.
|
# divide image width by A4 width (210mm) in inches.
|
||||||
dpi = int(width / (21 / 2.54))
|
dpi = int(width / (21 / 2.54))
|
||||||
self.log.debug(f"Estimated DPI {dpi} based on image width {width}")
|
self.log.debug(f"Estimated DPI {dpi} based on image width {width}")
|
||||||
|
52
uv.lock
generated
52
uv.lock
generated
@@ -1700,7 +1700,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mkdocs-material"
|
name = "mkdocs-material"
|
||||||
version = "9.6.19"
|
version = "9.6.20"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "babel", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
{ name = "babel", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
||||||
@@ -1716,9 +1716,9 @@ dependencies = [
|
|||||||
{ name = "pymdown-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
{ name = "pymdown-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
||||||
{ name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
{ name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/44/94/eb0fca39b19c2251b16bc759860a50f232655c4377116fa9c0e7db11b82c/mkdocs_material-9.6.19.tar.gz", hash = "sha256:80e7b3f9acabfee9b1f68bd12c26e59c865b3d5bbfb505fd1344e970db02c4aa", size = 4038202, upload-time = "2025-09-07T17:46:40.468Z" }
|
sdist = { url = "https://files.pythonhosted.org/packages/ba/ee/6ed7fc739bd7591485c8bec67d5984508d3f2733e708f32714c21593341a/mkdocs_material-9.6.20.tar.gz", hash = "sha256:e1f84d21ec5fb730673c4259b2e0d39f8d32a3fef613e3a8e7094b012d43e790", size = 4037822, upload-time = "2025-09-15T08:48:01.816Z" }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/02/23/a2551d1038bedc2771366f65ff3680bb3a89674cd7ca6140850c859f1f71/mkdocs_material-9.6.19-py3-none-any.whl", hash = "sha256:7492d2ac81952a467ca8a10cac915d6ea5c22876932f44b5a0f4f8e7d68ac06f", size = 9240205, upload-time = "2025-09-07T17:46:36.484Z" },
|
{ url = "https://files.pythonhosted.org/packages/67/d8/a31dd52e657bf12b20574706d07df8d767e1ab4340f9bfb9ce73950e5e59/mkdocs_material-9.6.20-py3-none-any.whl", hash = "sha256:b8d8c8b0444c7c06dd984b55ba456ce731f0035c5a1533cc86793618eb1e6c82", size = 9193367, upload-time = "2025-09-15T08:47:58.722Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1982,7 +1982,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ocrmypdf"
|
name = "ocrmypdf"
|
||||||
version = "16.10.4"
|
version = "16.11.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "deprecation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
{ name = "deprecation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
||||||
@@ -1995,9 +1995,9 @@ dependencies = [
|
|||||||
{ name = "pluggy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
{ name = "pluggy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
||||||
{ name = "rich", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
{ name = "rich", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/cd/40/cb85e6260e5a20d08195d03541b31db4296f8f4d3442ee595686f47a75b0/ocrmypdf-16.10.4.tar.gz", hash = "sha256:de749ef5f554b63d57e68d032e7cba5500cbd5030835bf24f658f7b7a04f3dc1", size = 7003649, upload-time = "2025-07-07T20:55:01.735Z" }
|
sdist = { url = "https://files.pythonhosted.org/packages/44/af/947d6abb0cb41f99971a7a4bd33684d3cee20c9e32c8f9dc90e8c5dcf21c/ocrmypdf-16.11.0.tar.gz", hash = "sha256:d89077e503238dac35c6e565925edc8d98b71e5289853c02cacbc1d0901f1be7", size = 7015068, upload-time = "2025-09-12T08:36:53.507Z" }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/8e/6a/53bb2b0e57f8ca8d4a021194202cc772d1ce049269e9b0cb88d1fa87a0ef/ocrmypdf-16.10.4-py3-none-any.whl", hash = "sha256:061f3165d09ffafac975cea00803802b8a75551ada9965292ea86ea382673688", size = 162559, upload-time = "2025-07-07T20:55:00.061Z" },
|
{ url = "https://files.pythonhosted.org/packages/d9/b2/eda3bb0939bf81d889812dd82cf37fa6f8769af8e31008bd586ba12fae09/ocrmypdf-16.11.0-py3-none-any.whl", hash = "sha256:13628294a309c85b21947b5c7bc7fcd202464517c14b71a050adc9dde85c48f7", size = 162883, upload-time = "2025-09-12T08:36:51.611Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2194,7 +2194,7 @@ requires-dist = [
|
|||||||
{ name = "langdetect", specifier = "~=1.0.9" },
|
{ name = "langdetect", specifier = "~=1.0.9" },
|
||||||
{ name = "mysqlclient", marker = "extra == 'mariadb'", specifier = "~=2.2.7" },
|
{ name = "mysqlclient", marker = "extra == 'mariadb'", specifier = "~=2.2.7" },
|
||||||
{ name = "nltk", specifier = "~=3.9.1" },
|
{ name = "nltk", specifier = "~=3.9.1" },
|
||||||
{ name = "ocrmypdf", specifier = "~=16.10.0" },
|
{ name = "ocrmypdf", specifier = "~=16.11.0" },
|
||||||
{ name = "pathvalidate", specifier = "~=3.3.1" },
|
{ name = "pathvalidate", specifier = "~=3.3.1" },
|
||||||
{ name = "pdf2image", specifier = "~=1.17.0" },
|
{ name = "pdf2image", specifier = "~=1.17.0" },
|
||||||
{ name = "psycopg", extras = ["c", "pool"], marker = "extra == 'postgres'", specifier = "==3.2.9" },
|
{ name = "psycopg", extras = ["c", "pool"], marker = "extra == 'postgres'", specifier = "==3.2.9" },
|
||||||
@@ -2242,7 +2242,7 @@ dev = [
|
|||||||
{ name = "pytest-rerunfailures" },
|
{ name = "pytest-rerunfailures" },
|
||||||
{ name = "pytest-sugar" },
|
{ name = "pytest-sugar" },
|
||||||
{ name = "pytest-xdist" },
|
{ name = "pytest-xdist" },
|
||||||
{ name = "ruff", specifier = "~=0.12.2" },
|
{ name = "ruff", specifier = "~=0.13.0" },
|
||||||
]
|
]
|
||||||
docs = [
|
docs = [
|
||||||
{ name = "mkdocs-glightbox", specifier = "~=0.5.1" },
|
{ name = "mkdocs-glightbox", specifier = "~=0.5.1" },
|
||||||
@@ -2251,7 +2251,7 @@ docs = [
|
|||||||
lint = [
|
lint = [
|
||||||
{ name = "pre-commit", specifier = "~=4.3.0" },
|
{ name = "pre-commit", specifier = "~=4.3.0" },
|
||||||
{ name = "pre-commit-uv", specifier = "~=4.1.3" },
|
{ name = "pre-commit-uv", specifier = "~=4.1.3" },
|
||||||
{ name = "ruff", specifier = "~=0.12.2" },
|
{ name = "ruff", specifier = "~=0.13.0" },
|
||||||
]
|
]
|
||||||
testing = [
|
testing = [
|
||||||
{ name = "daphne" },
|
{ name = "daphne" },
|
||||||
@@ -3280,25 +3280,25 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruff"
|
name = "ruff"
|
||||||
version = "0.12.12"
|
version = "0.13.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a8/f0/e0965dd709b8cabe6356811c0ee8c096806bb57d20b5019eb4e48a117410/ruff-0.12.12.tar.gz", hash = "sha256:b86cd3415dbe31b3b46a71c598f4c4b2f550346d1ccf6326b347cc0c8fd063d6", size = 5359915, upload-time = "2025-09-04T16:50:18.273Z" }
|
sdist = { url = "https://files.pythonhosted.org/packages/6e/1a/1f4b722862840295bcaba8c9e5261572347509548faaa99b2d57ee7bfe6a/ruff-0.13.0.tar.gz", hash = "sha256:5b4b1ee7eb35afae128ab94459b13b2baaed282b1fb0f472a73c82c996c8ae60", size = 5372863, upload-time = "2025-09-10T16:25:37.917Z" }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/09/79/8d3d687224d88367b51c7974cec1040c4b015772bfbeffac95face14c04a/ruff-0.12.12-py3-none-linux_armv6l.whl", hash = "sha256:de1c4b916d98ab289818e55ce481e2cacfaad7710b01d1f990c497edf217dafc", size = 12116602, upload-time = "2025-09-04T16:49:18.892Z" },
|
{ url = "https://files.pythonhosted.org/packages/ac/fe/6f87b419dbe166fd30a991390221f14c5b68946f389ea07913e1719741e0/ruff-0.13.0-py3-none-linux_armv6l.whl", hash = "sha256:137f3d65d58ee828ae136a12d1dc33d992773d8f7644bc6b82714570f31b2004", size = 12187826, upload-time = "2025-09-10T16:24:39.5Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/c3/c3/6e599657fe192462f94861a09aae935b869aea8a1da07f47d6eae471397c/ruff-0.12.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7acd6045e87fac75a0b0cdedacf9ab3e1ad9d929d149785903cff9bb69ad9727", size = 12868393, upload-time = "2025-09-04T16:49:23.043Z" },
|
{ url = "https://files.pythonhosted.org/packages/e4/25/c92296b1fc36d2499e12b74a3fdb230f77af7bdf048fad7b0a62e94ed56a/ruff-0.13.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:21ae48151b66e71fd111b7d79f9ad358814ed58c339631450c66a4be33cc28b9", size = 12933428, upload-time = "2025-09-10T16:24:43.866Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/e8/d2/9e3e40d399abc95336b1843f52fc0daaceb672d0e3c9290a28ff1a96f79d/ruff-0.12.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:abf4073688d7d6da16611f2f126be86523a8ec4343d15d276c614bda8ec44edb", size = 12036967, upload-time = "2025-09-04T16:49:26.04Z" },
|
{ url = "https://files.pythonhosted.org/packages/44/cf/40bc7221a949470307d9c35b4ef5810c294e6cfa3caafb57d882731a9f42/ruff-0.13.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:64de45f4ca5441209e41742d527944635a05a6e7c05798904f39c85bafa819e3", size = 12095543, upload-time = "2025-09-10T16:24:46.638Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/e9/03/6816b2ed08836be272e87107d905f0908be5b4a40c14bfc91043e76631b8/ruff-0.12.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:968e77094b1d7a576992ac078557d1439df678a34c6fe02fd979f973af167577", size = 12276038, upload-time = "2025-09-04T16:49:29.056Z" },
|
{ url = "https://files.pythonhosted.org/packages/f1/03/8b5ff2a211efb68c63a1d03d157e924997ada87d01bebffbd13a0f3fcdeb/ruff-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b2c653ae9b9d46e0ef62fc6fbf5b979bda20a0b1d2b22f8f7eb0cde9f4963b8", size = 12312489, upload-time = "2025-09-10T16:24:49.556Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/9f/d5/707b92a61310edf358a389477eabd8af68f375c0ef858194be97ca5b6069/ruff-0.12.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42a67d16e5b1ffc6d21c5f67851e0e769517fb57a8ebad1d0781b30888aa704e", size = 11901110, upload-time = "2025-09-04T16:49:32.07Z" },
|
{ url = "https://files.pythonhosted.org/packages/37/fc/2336ef6d5e9c8d8ea8305c5f91e767d795cd4fc171a6d97ef38a5302dadc/ruff-0.13.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cec632534332062bc9eb5884a267b689085a1afea9801bf94e3ba7498a2d207", size = 11991631, upload-time = "2025-09-10T16:24:53.439Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/9d/3d/f8b1038f4b9822e26ec3d5b49cf2bc313e3c1564cceb4c1a42820bf74853/ruff-0.12.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b216ec0a0674e4b1214dcc998a5088e54eaf39417327b19ffefba1c4a1e4971e", size = 13668352, upload-time = "2025-09-04T16:49:35.148Z" },
|
{ url = "https://files.pythonhosted.org/packages/39/7f/f6d574d100fca83d32637d7f5541bea2f5e473c40020bbc7fc4a4d5b7294/ruff-0.13.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd628101d9f7d122e120ac7c17e0a0f468b19bc925501dbe03c1cb7f5415b24", size = 13720602, upload-time = "2025-09-10T16:24:56.392Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/98/0e/91421368ae6c4f3765dd41a150f760c5f725516028a6be30e58255e3c668/ruff-0.12.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:59f909c0fdd8f1dcdbfed0b9569b8bf428cf144bec87d9de298dcd4723f5bee8", size = 14638365, upload-time = "2025-09-04T16:49:38.892Z" },
|
{ url = "https://files.pythonhosted.org/packages/fd/c8/a8a5b81d8729b5d1f663348d11e2a9d65a7a9bd3c399763b1a51c72be1ce/ruff-0.13.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afe37db8e1466acb173bb2a39ca92df00570e0fd7c94c72d87b51b21bb63efea", size = 14697751, upload-time = "2025-09-10T16:24:59.89Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/74/5d/88f3f06a142f58ecc8ecb0c2fe0b82343e2a2b04dcd098809f717cf74b6c/ruff-0.12.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ac93d87047e765336f0c18eacad51dad0c1c33c9df7484c40f98e1d773876f5", size = 14060812, upload-time = "2025-09-04T16:49:42.732Z" },
|
{ url = "https://files.pythonhosted.org/packages/57/f5/183ec292272ce7ec5e882aea74937f7288e88ecb500198b832c24debc6d3/ruff-0.13.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f96a8d90bb258d7d3358b372905fe7333aaacf6c39e2408b9f8ba181f4b6ef2", size = 14095317, upload-time = "2025-09-10T16:25:03.025Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/13/fc/8962e7ddd2e81863d5c92400820f650b86f97ff919c59836fbc4c1a6d84c/ruff-0.12.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:01543c137fd3650d322922e8b14cc133b8ea734617c4891c5a9fccf4bfc9aa92", size = 13050208, upload-time = "2025-09-04T16:49:46.434Z" },
|
{ url = "https://files.pythonhosted.org/packages/9f/8d/7f9771c971724701af7926c14dab31754e7b303d127b0d3f01116faef456/ruff-0.13.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b5e3d883e4f924c5298e3f2ee0f3085819c14f68d1e5b6715597681433f153", size = 13144418, upload-time = "2025-09-10T16:25:06.272Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/53/06/8deb52d48a9a624fd37390555d9589e719eac568c020b27e96eed671f25f/ruff-0.12.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afc2fa864197634e549d87fb1e7b6feb01df0a80fd510d6489e1ce8c0b1cc45", size = 13311444, upload-time = "2025-09-04T16:49:49.931Z" },
|
{ url = "https://files.pythonhosted.org/packages/a8/a6/7985ad1778e60922d4bef546688cd8a25822c58873e9ff30189cfe5dc4ab/ruff-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03447f3d18479df3d24917a92d768a89f873a7181a064858ea90a804a7538991", size = 13370843, upload-time = "2025-09-10T16:25:09.965Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/2a/81/de5a29af7eb8f341f8140867ffb93f82e4fde7256dadee79016ac87c2716/ruff-0.12.12-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:0c0945246f5ad776cb8925e36af2438e66188d2b57d9cf2eed2c382c58b371e5", size = 13279474, upload-time = "2025-09-04T16:49:53.465Z" },
|
{ url = "https://files.pythonhosted.org/packages/64/1c/bafdd5a7a05a50cc51d9f5711da704942d8dd62df3d8c70c311e98ce9f8a/ruff-0.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:fbc6b1934eb1c0033da427c805e27d164bb713f8e273a024a7e86176d7f462cf", size = 13321891, upload-time = "2025-09-10T16:25:12.969Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/7f/14/d9577fdeaf791737ada1b4f5c6b59c21c3326f3f683229096cccd7674e0c/ruff-0.12.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a0fbafe8c58e37aae28b84a80ba1817f2ea552e9450156018a478bf1fa80f4e4", size = 12070204, upload-time = "2025-09-04T16:49:56.882Z" },
|
{ url = "https://files.pythonhosted.org/packages/bc/3e/7817f989cb9725ef7e8d2cee74186bf90555279e119de50c750c4b7a72fe/ruff-0.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a8ab6a3e03665d39d4a25ee199d207a488724f022db0e1fe4002968abdb8001b", size = 12119119, upload-time = "2025-09-10T16:25:16.621Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/77/04/a910078284b47fad54506dc0af13839c418ff704e341c176f64e1127e461/ruff-0.12.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b9c456fb2fc8e1282affa932c9e40f5ec31ec9cbb66751a316bd131273b57c23", size = 11880347, upload-time = "2025-09-04T16:49:59.729Z" },
|
{ url = "https://files.pythonhosted.org/packages/58/07/9df080742e8d1080e60c426dce6e96a8faf9a371e2ce22eef662e3839c95/ruff-0.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d2a5c62f8ccc6dd2fe259917482de7275cecc86141ee10432727c4816235bc41", size = 11961594, upload-time = "2025-09-10T16:25:19.49Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/df/58/30185fcb0e89f05e7ea82e5817b47798f7fa7179863f9d9ba6fd4fe1b098/ruff-0.12.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f12856123b0ad0147d90b3961f5c90e7427f9acd4b40050705499c98983f489", size = 12891844, upload-time = "2025-09-04T16:50:02.591Z" },
|
{ url = "https://files.pythonhosted.org/packages/6a/f4/ae1185349197d26a2316840cb4d6c3fba61d4ac36ed728bf0228b222d71f/ruff-0.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b7b85ca27aeeb1ab421bc787009831cffe6048faae08ad80867edab9f2760945", size = 12933377, upload-time = "2025-09-10T16:25:22.371Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/21/9c/28a8dacce4855e6703dcb8cdf6c1705d0b23dd01d60150786cd55aa93b16/ruff-0.12.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:26a1b5a2bf7dd2c47e3b46d077cd9c0fc3b93e6c6cc9ed750bd312ae9dc302ee", size = 13360687, upload-time = "2025-09-04T16:50:05.8Z" },
|
{ url = "https://files.pythonhosted.org/packages/b6/39/e776c10a3b349fc8209a905bfb327831d7516f6058339a613a8d2aaecacd/ruff-0.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:79ea0c44a3032af768cabfd9616e44c24303af49d633b43e3a5096e009ebe823", size = 13418555, upload-time = "2025-09-10T16:25:25.681Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
Reference in New Issue
Block a user