mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-07-04 11:53:32 +03:00
deekshu coverage tool and duru second func improv
This commit is contained in:
parent
703b8cf6c3
commit
e31adc7e40
|
@ -4,6 +4,8 @@ import sys
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from PIL import PdfParser
|
from PIL import PdfParser
|
||||||
|
from PIL import ImageCms
|
||||||
|
from PIL import McIdasImagePlugin
|
||||||
|
|
||||||
pytest_plugins = ["Tests.helper"]
|
pytest_plugins = ["Tests.helper"]
|
||||||
|
|
||||||
|
@ -12,6 +14,8 @@ def calculate_coverage(test_name):
|
||||||
all_branches = {
|
all_branches = {
|
||||||
"branches1": Image.branches,
|
"branches1": Image.branches,
|
||||||
"branches2": PdfParser.XrefTable.branches,
|
"branches2": PdfParser.XrefTable.branches,
|
||||||
|
"branches3": ImageCms.ImageCmsProfile.branches,
|
||||||
|
"branches4": McIdasImagePlugin.McIdasImageFile.branches,
|
||||||
# Add more
|
# Add more
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,5 +50,3 @@ def pytest_sessionfinish(session, exitstatus):
|
||||||
|
|
||||||
coverage = calculate_coverage(test_name)
|
coverage = calculate_coverage(test_name)
|
||||||
print("\nBRANCH COVERAGE for", test_name, ":", coverage, "%\n")
|
print("\nBRANCH COVERAGE for", test_name, ":", coverage, "%\n")
|
||||||
|
|
||||||
|
|
|
@ -237,6 +237,17 @@ _FLAGS = {
|
||||||
|
|
||||||
|
|
||||||
class ImageCmsProfile:
|
class ImageCmsProfile:
|
||||||
|
branches = {
|
||||||
|
"1": False,
|
||||||
|
"2": False,
|
||||||
|
"3": False,
|
||||||
|
"4": False,
|
||||||
|
"5": False,
|
||||||
|
"6": False,
|
||||||
|
"7": False,
|
||||||
|
"8": False,
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, profile: str | SupportsRead[bytes] | core.CmsProfile) -> None:
|
def __init__(self, profile: str | SupportsRead[bytes] | core.CmsProfile) -> None:
|
||||||
"""
|
"""
|
||||||
:param profile: Either a string representing a filename,
|
:param profile: Either a string representing a filename,
|
||||||
|
@ -246,23 +257,32 @@ class ImageCmsProfile:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if isinstance(profile, str):
|
if isinstance(profile, str):
|
||||||
|
ImageCmsProfile.branches["1"] = True
|
||||||
if sys.platform == "win32":
|
if sys.platform == "win32":
|
||||||
|
ImageCmsProfile.branches["2"] = True
|
||||||
profile_bytes_path = profile.encode()
|
profile_bytes_path = profile.encode()
|
||||||
try:
|
try:
|
||||||
|
ImageCmsProfile.branches["3"] = True
|
||||||
profile_bytes_path.decode("ascii")
|
profile_bytes_path.decode("ascii")
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
|
ImageCmsProfile.branches["4"] = True
|
||||||
with open(profile, "rb") as f:
|
with open(profile, "rb") as f:
|
||||||
|
ImageCmsProfile.branches["5"] = True
|
||||||
self._set(core.profile_frombytes(f.read()))
|
self._set(core.profile_frombytes(f.read()))
|
||||||
return
|
return
|
||||||
self._set(core.profile_open(profile), profile)
|
self._set(core.profile_open(profile), profile)
|
||||||
elif hasattr(profile, "read"):
|
elif hasattr(profile, "read"):
|
||||||
|
ImageCmsProfile.branches["6"] = True
|
||||||
self._set(core.profile_frombytes(profile.read()))
|
self._set(core.profile_frombytes(profile.read()))
|
||||||
elif isinstance(profile, core.CmsProfile):
|
elif isinstance(profile, core.CmsProfile):
|
||||||
|
ImageCmsProfile.branches["7"] = True
|
||||||
self._set(profile)
|
self._set(profile)
|
||||||
else:
|
else:
|
||||||
|
ImageCmsProfile.branches["8"] = True
|
||||||
msg = "Invalid type for Profile" # type: ignore[unreachable]
|
msg = "Invalid type for Profile" # type: ignore[unreachable]
|
||||||
raise TypeError(msg)
|
raise TypeError(msg)
|
||||||
|
|
||||||
|
|
||||||
def _set(self, profile: core.CmsProfile, filename: str | None = None) -> None:
|
def _set(self, profile: core.CmsProfile, filename: str | None = None) -> None:
|
||||||
self.profile = profile
|
self.profile = profile
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
|
|
|
@ -31,6 +31,14 @@ def _accept(prefix: bytes) -> bool:
|
||||||
|
|
||||||
|
|
||||||
class McIdasImageFile(ImageFile.ImageFile):
|
class McIdasImageFile(ImageFile.ImageFile):
|
||||||
|
branches = {
|
||||||
|
"1": False,
|
||||||
|
"2": False,
|
||||||
|
"3": False,
|
||||||
|
"4": False,
|
||||||
|
"5": False,
|
||||||
|
}
|
||||||
|
|
||||||
format = "MCIDAS"
|
format = "MCIDAS"
|
||||||
format_description = "McIdas area file"
|
format_description = "McIdas area file"
|
||||||
|
|
||||||
|
@ -40,6 +48,7 @@ class McIdasImageFile(ImageFile.ImageFile):
|
||||||
|
|
||||||
s = self.fp.read(256)
|
s = self.fp.read(256)
|
||||||
if not _accept(s) or len(s) != 256:
|
if not _accept(s) or len(s) != 256:
|
||||||
|
McIdasImageFile.branches["1"] = True
|
||||||
msg = "not an McIdas area file"
|
msg = "not an McIdas area file"
|
||||||
raise SyntaxError(msg)
|
raise SyntaxError(msg)
|
||||||
|
|
||||||
|
@ -48,16 +57,20 @@ class McIdasImageFile(ImageFile.ImageFile):
|
||||||
|
|
||||||
# get mode
|
# get mode
|
||||||
if w[11] == 1:
|
if w[11] == 1:
|
||||||
|
McIdasImageFile.branches["2"] = True
|
||||||
mode = rawmode = "L"
|
mode = rawmode = "L"
|
||||||
elif w[11] == 2:
|
elif w[11] == 2:
|
||||||
|
McIdasImageFile.branches["3"] = True
|
||||||
# FIXME: add memory map support
|
# FIXME: add memory map support
|
||||||
mode = "I"
|
mode = "I"
|
||||||
rawmode = "I;16B"
|
rawmode = "I;16B"
|
||||||
elif w[11] == 4:
|
elif w[11] == 4:
|
||||||
|
McIdasImageFile.branches["4"] = True
|
||||||
# FIXME: add memory map support
|
# FIXME: add memory map support
|
||||||
mode = "I"
|
mode = "I"
|
||||||
rawmode = "I;32B"
|
rawmode = "I;32B"
|
||||||
else:
|
else:
|
||||||
|
McIdasImageFile.branches["5"] = True
|
||||||
msg = "unsupported McIdas format"
|
msg = "unsupported McIdas format"
|
||||||
raise SyntaxError(msg)
|
raise SyntaxError(msg)
|
||||||
|
|
||||||
|
@ -76,3 +89,4 @@ class McIdasImageFile(ImageFile.ImageFile):
|
||||||
Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept)
|
Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept)
|
||||||
|
|
||||||
# no default extension
|
# no default extension
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user