Skip to content

Commit

Permalink
fix in method tesseract_parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
amenezes committed Feb 5, 2024
1 parent 9eb763b commit b272632
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 9 deletions.
2 changes: 1 addition & 1 deletion aiopytesseract/base_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ async def _build_cmd_args(
if config:
for option, value in config:
cmd_args.append("-c")
cmd_args.append(f"{option}={value} ")
cmd_args.append(f"{option}={value}")

extension = reversed(output_extension.split())
for ext in extension:
Expand Down
13 changes: 11 additions & 2 deletions aiopytesseract/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,14 +168,23 @@ async def tesseract_parameters(
raw_data: bytes = await proc.stdout.read() # type: ignore
data = raw_data.decode(encoding)
params = []
for line in data.split("\n"):
# [1:] - skip first line with text: "Tesseract parameters:\n"
for line in data.split("\n")[1:]:
param = re.search(r"(\w+)\s+(-?\d+.?\d*)\s+(.*)[^\n]$", line)
if param:
params.append(
cattr.structure_attrs_fromtuple(
[param.group(1), param.group(2), param.group(3)], Parameter # type: ignore
[param.group(1), param.group(3), param.group(2)], Parameter # type: ignore
)
)
else:
param = re.search(r"(\w+)\s+(.*)[^\n]$", line)
if param:
params.append(
cattr.structure_attrs_fromtuple(
[param.group(1), param.group(2)], Parameter # type: ignore
)
)
return sorted(params, key=lambda p: p.name)


Expand Down
14 changes: 9 additions & 5 deletions aiopytesseract/models/parameter.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
from dataclasses import dataclass
from typing import Union

from attr import converters, field, frozen, validators

@dataclass(frozen=True)

@frozen
class Parameter:
name: str
value: float
description: str
name: str = field(validator=validators.instance_of(str))
description: str = field(validator=validators.instance_of(str))
value: Union[None, str] = field(
default=None, converter=converters.default_if_none("-") # type: ignore
)
3 changes: 2 additions & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ keywords = "asyncio", "ocr", "tesseract"
packages = find:
install_requires =
aiofiles >= 0.8.0
attrs >= 22.1.0
cattrs >= 22.1.0
python_requires = >= 3.8

Expand Down Expand Up @@ -90,7 +91,7 @@ disallow_untyped_decorators = True
disallow_any_generics = True

[tox:tox]
envlist = py{38,39,310,311,312},pypy{3.8,3.9}
envlist = py{38,39,310,311,312},pypy{3.8,3.9,3.10}

[testenv]
deps = -rrequirements-dev.txt
Expand Down
8 changes: 8 additions & 0 deletions tests/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,14 @@ async def test_tesseract_parameters():
assert isinstance(parameters[0], Parameter)


@pytest.mark.xfail(
reason="The number of parameters in Tesseract can vary between releases."
)
async def test_len_tesseract_parameters():
parameters = await aiopytesseract.tesseract_parameters()
assert len(parameters) == 627


@pytest.mark.parametrize(
"func, timeout",
[
Expand Down

0 comments on commit b272632

Please sign in to comment.