@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
66name = " thumbhash-python"
77description = ' A Python implementation of the Thumbhash image placeholder generation algorithm.'
88readme = " README.md"
9- requires-python = " >=3.7 "
9+ requires-python = " >=3.8 "
1010license = " MIT"
1111authors = [
1212 { name = " Yohann MARTIN" , email = " contact@codexus.fr" },
@@ -22,17 +22,19 @@ classifiers = [
2222 " Intended Audience :: Developers" ,
2323 " License :: OSI Approved :: MIT License" ,
2424 " Programming Language :: Python" ,
25- " Programming Language :: Python :: 3.7" ,
25+ " Programming Language :: Python :: 3" ,
26+ " Programming Language :: Python :: 3 :: Only" ,
2627 " Programming Language :: Python :: 3.8" ,
2728 " Programming Language :: Python :: 3.9" ,
2829 " Programming Language :: Python :: 3.10" ,
2930 " Programming Language :: Python :: 3.11" ,
31+ " Programming Language :: Python :: 3.12" ,
3032 " Programming Language :: Python :: Implementation :: CPython" ,
3133 " Programming Language :: Python :: Implementation :: PyPy" ,
3234]
3335dependencies = [
34- " Pillow >=8.0.0,<10 .0.0" ,
35- " typer[all] == 0.7.0"
36+ " Pillow >=8.0.0,<11 .0.0" ,
37+ " typer[all] >= 0.7.0,<1.0 .0"
3638]
3739dynamic = [" version" ]
3840
@@ -42,18 +44,14 @@ Issues = "https://github.com/Astropilot/thumbhash-python/issues"
4244Source = " https://github.com/Astropilot/thumbhash-python"
4345
4446[project .optional-dependencies ]
45- test = [
46- " pytest >=7.1.3,<8.0.0" ,
47- " coverage[toml] >= 6.5.0,< 8.0"
48- ]
4947dev = [
50- " mypy ==1.1.1" ,
51- " ruff ==0.0.257" ,
52- " black ==23.1.0" ,
53- " isort >=5.0.6,<6.0.0" ,
54- " devtools[pygments] ==0.10.0" ,
48+ " types-Pillow >=10.0.0" ,
5549
56- " types-Pillow >=9.0.0"
50+ " mypy ==1.7.1" ,
51+ " ruff ==0.1.8" ,
52+ " devtools[pygments] ==0.12.2" ,
53+ " pytest >=7.1.3,<8.0.0" ,
54+ " coverage[toml] >=6.5.0,<8.0"
5755]
5856
5957[project .scripts ]
@@ -66,12 +64,11 @@ path = "thumbhash/__version__.py"
6664exclude = [
6765 " /.github" ,
6866 " /.vscode" ,
69- " /scripts"
67+ " /scripts" ,
7068]
7169
72- [tool .isort ]
73- profile = " black"
74- known_third_party = [" thumbhash" , " typer" ]
70+ [tool .hatch .build .targets .wheel ]
71+ packages = [" thumbhash" ]
7572
7673[tool .mypy ]
7774strict = true
@@ -90,27 +87,33 @@ exclude_lines = [
9087 " if TYPE_CHECKING:" ,
9188]
9289
93- [tool .ruff ]
94- target-version = " py37"
90+ [tool .ruff .lint ]
9591select = [
96- " E" , # pycodestyle errors
97- " W" , # pycodestyle warnings
98- " F" , # pyflakes
99- # "I", # isort
100- " C" , # flake8-comprehensions
101- " B" , # flake8-bugbear
92+ " E" , # pycodestyle errors
93+ " W" , # pycodestyle warnings
94+ " F" , # pyflakes
95+ " I" , # isort
96+ " C" , # flake8-comprehensions
97+ " B" , # flake8-bugbear
98+ " UP" , # pyupgrade
10299]
103100ignore = [
104- " E501" , # line too long, handled by black
105- " B008" , # do not perform function calls in argument defaults
106- " C901" , # too complex
101+ " E501" , # line too long, handled by ruff
102+ " B008" , # do not perform function calls in argument defaults
103+ " C901" , # too complex,
104+ " W191" , # indentation contains tabs
105+ " B904" # Opinionated warning on exception chaining
107106]
107+ [tool .ruff .format ]
108+ line-ending = " lf"
109+ quote-style = " double"
110+ indent-style = " space"
108111
109112[tool .ruff .per-file-ignores ]
110113"__init__.py" = [" F401" ]
111114
112115[tool .ruff .isort ]
113- known-third-party = [" thumbhash" ]
116+ known-third-party = [" thumbhash" , " typer " , " PIL " ]
114117
115118[tool .pyright ]
116119reportUnknownMemberType =false
0 commit comments