This commit is contained in:
parent
8651884ca6
commit
2c25b33bcc
15
poetry.lock
generated
15
poetry.lock
generated
@ -1000,6 +1000,19 @@ files = [
|
||||
{file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pygifsicle"
|
||||
version = "1.1.0"
|
||||
description = "Python package wrapping the gifsicle library for editing and optimizing gifs."
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "pygifsicle-1.1.0.tar.gz", hash = "sha256:dcef433520ace4c1136dfc7060e77042142a3dbd6bdb6a19bd9149ef5cbe7441"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
test = ["pytest", "pytest-cov", "touch", "validate_version_code"]
|
||||
|
||||
[[package]]
|
||||
name = "pygments"
|
||||
version = "2.18.0"
|
||||
@ -1490,4 +1503,4 @@ files = [
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10"
|
||||
content-hash = "e543bbcb3ca374c270392aeef932dd1711e54689f73923e90302a28822a243fe"
|
||||
content-hash = "1b586d7f23aca41e499ce94ec10eacfab3c2e260bb16822638ae1f831b2988be"
|
||||
|
@ -16,6 +16,7 @@ sympy = "^1.13.3"
|
||||
networkx = "^3.4.2"
|
||||
pillow = "^11.0.0"
|
||||
imageio = "^2.36.1"
|
||||
pygifsicle = "^1.1.0"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pyright = "^1.1.389"
|
||||
|
@ -1,7 +1,16 @@
|
||||
from abc import abstractmethod
|
||||
from logging import Logger
|
||||
from pathlib import Path
|
||||
from typing import Any, Final, Iterable, Iterator, Protocol, Sequence, TypeVar, overload
|
||||
from typing import (
|
||||
Any,
|
||||
Final,
|
||||
Iterable,
|
||||
Iterator,
|
||||
Protocol,
|
||||
Sequence,
|
||||
TypeVar,
|
||||
overload,
|
||||
)
|
||||
|
||||
from numpy.typing import NDArray
|
||||
|
||||
@ -18,15 +27,19 @@ class ProgressHandler(Protocol):
|
||||
|
||||
class FileHandler:
|
||||
@abstractmethod
|
||||
def create(self, filename: str, content: bytes, text: bool = False): ...
|
||||
def create(
|
||||
self, filename: str, content: bytes, text: bool = False
|
||||
) -> Path | None: ...
|
||||
|
||||
def image(self, filename: str, image: NDArray[Any]):
|
||||
from io import BytesIO
|
||||
|
||||
import imageio.v3 as iio
|
||||
from pygifsicle import optimize # type: ignore
|
||||
|
||||
data = iio.imwrite("<bytes>", image, extension=Path(filename).suffix) # type: ignore
|
||||
self.create(filename, data, False)
|
||||
path = self.create(filename, data, False)
|
||||
|
||||
assert path is not None
|
||||
optimize(path, options=["--no-warnings"])
|
||||
|
||||
|
||||
class BaseSolver:
|
||||
|
@ -14,3 +14,4 @@ class FileHandlerAPI(FileHandler):
|
||||
with open(self.folder.joinpath(filename), "wb") as fp:
|
||||
fp.write(content)
|
||||
dump_api_message("file", {"filename": filename, "size": len(content)})
|
||||
return self.folder.joinpath(filename)
|
||||
|
@ -18,3 +18,4 @@ class SimpleFileHandler(FileHandler):
|
||||
self.folder.mkdir(exist_ok=True)
|
||||
with open(self.folder.joinpath(filename), "wb") as fp:
|
||||
fp.write(content)
|
||||
return self.folder.joinpath(filename)
|
||||
|
Loading…
Reference in New Issue
Block a user