1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-03-11 19:21:39 +00:00

Compare commits

..

3 Commits

Author SHA1 Message Date
f26b515286 More testing with pyproject.toml 2025-12-31 21:22:46 -06:00
9f83018a1a feat: Moving to pyproject.toml for most project configuration
Still have some build migration to do and other cleanup.
2025-12-31 20:33:12 -06:00
Alexander Gee
8f197ea7e1 feat: Create longest and shortest path criteria (#1242)
* Create longest and shortest path criteria
2024-08-23 18:31:46 -05:00
4 changed files with 23 additions and 32 deletions

View File

@@ -96,6 +96,8 @@ class FilenameCategory(CriterionCategory):
DOESNT_END_WITH_NUMBER = 1 DOESNT_END_WITH_NUMBER = 1
LONGEST = 2 LONGEST = 2
SHORTEST = 3 SHORTEST = 3
LONGEST_PATH = 4
SHORTEST_PATH = 5
def format_criterion_value(self, value): def format_criterion_value(self, value):
return { return {
@@ -103,6 +105,8 @@ class FilenameCategory(CriterionCategory):
self.DOESNT_END_WITH_NUMBER: tr("Doesn't end with number"), self.DOESNT_END_WITH_NUMBER: tr("Doesn't end with number"),
self.LONGEST: tr("Longest"), self.LONGEST: tr("Longest"),
self.SHORTEST: tr("Shortest"), self.SHORTEST: tr("Shortest"),
self.LONGEST_PATH: tr("Longest Path"),
self.SHORTEST_PATH: tr("Shortest Path"),
}[value] }[value]
def extract_value(self, dupe): def extract_value(self, dupe):
@@ -116,6 +120,10 @@ class FilenameCategory(CriterionCategory):
return 0 if ends_with_digit else 1 return 0 if ends_with_digit else 1
else: else:
return 1 if ends_with_digit else 0 return 1 if ends_with_digit else 0
elif crit_value == self.LONGEST_PATH:
return len(str(dupe.folder_path)) * -1
elif crit_value == self.SHORTEST_PATH:
return len(str(dupe.folder_path))
else: else:
value = len(value) value = len(value)
if crit_value == self.LONGEST: if crit_value == self.LONGEST:
@@ -130,6 +138,8 @@ class FilenameCategory(CriterionCategory):
self.DOESNT_END_WITH_NUMBER, self.DOESNT_END_WITH_NUMBER,
self.LONGEST, self.LONGEST,
self.SHORTEST, self.SHORTEST,
self.LONGEST_PATH,
self.SHORTEST_PATH,
] ]
] ]

View File

@@ -1,5 +1,5 @@
[build-system] [build-system]
requires = ["setuptools >= 61.0.0"] requires = ["setuptools >= 75.3.1"]
build-backend = "setuptools.build_meta" build-backend = "setuptools.build_meta"
[project] [project]
@@ -9,13 +9,12 @@ authors = [
{name = "Andrew Senetar", email = "arsenetar@voltaicideas.net"} {name = "Andrew Senetar", email = "arsenetar@voltaicideas.net"}
] ]
readme = "README.md" readme = "README.md"
requires-python = ">=3.7, <3.13" license = "GPL-3.0-or-later"
license-files = ["LICENSE"]
keywords = ["deduplication"] keywords = ["deduplication"]
license = {text = "GPLv3"}
classifiers = [ classifiers = [
"Development Status :: 5 - Production/Stable", "Development Status :: 5 - Production/Stable",
"Intended Audience :: End Users/Desktop", "Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Operating System :: MacOS :: MacOS X", "Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows", "Operating System :: Microsoft :: Windows",
"Operating System :: POSIX", "Operating System :: POSIX",
@@ -28,6 +27,7 @@ classifiers = [
"Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.12",
"Topic :: Desktop Environment :: File Managers", "Topic :: Desktop Environment :: File Managers",
] ]
requires-python = ">=3.7, <3.13"
dynamic = ["version"] dynamic = ["version"]
@@ -38,7 +38,7 @@ dependencies = [
"PyQt5 >=5.15.0,<6.0; sys_platform != 'linux'", "PyQt5 >=5.15.0,<6.0; sys_platform != 'linux'",
"pywin32>=304; sys_platform == 'win32'", "pywin32>=304; sys_platform == 'win32'",
"semantic-version>=2.0.0,<3.0.0", "semantic-version>=2.0.0,<3.0.0",
"Send2Trash>=1.8.2,<2.0.0", "Send2Trash>=1.8.2",
"xxhash>=3.0.0,<4.0.0", "xxhash>=3.0.0,<4.0.0",
] ]
@@ -57,7 +57,7 @@ build = [
[project.urls] [project.urls]
Homepage = "https://dupeguru.voltaicideas.net/" Homepage = "https://dupeguru.voltaicideas.net/"
Documentation = "https://dupeguru.voltaicideas.net/help/en/" Documentation = "https://dupeguru.voltaicideas.net/help/en/"
Repository = "https://github.com/arsenetar/dupeguru/" Repository = "https://github.com/arsenetar/dupeguru.git"
Issues = "https://github.com/arsenetar/dupeguru/issues" Issues = "https://github.com/arsenetar/dupeguru/issues"
Releases = "https://github.com/arsenetar/dupeguru/releases" Releases = "https://github.com/arsenetar/dupeguru/releases"
@@ -77,3 +77,10 @@ include = ["core", "hscommon", "qt"]
[tool.setuptools.dynamic] [tool.setuptools.dynamic]
version = {attr = "core.__version__"} version = {attr = "core.__version__"}
[tool.setuptools]
ext-modules = [
{name = "core.pe._block", sources = ["core/pe/modules/block.c", "core/pe/modules/common.c"], include-dirs = ["core/pe/modules"]},
{name = "core.pe._cache", sources = ["core/pe/modules/cache.c", "core/pe/modules/common.c"], include-dirs = ["core/pe/modules"]},
{name = "qt.pe._block_qt", sources = ["qt/pe/modules/block.c"]},
]

View File

@@ -1,26 +0,0 @@
from setuptools import setup, Extension
from pathlib import Path
exts = [
Extension(
"core.pe._block",
[
str(Path("core", "pe", "modules", "block.c")),
str(Path("core", "pe", "modules", "common.c")),
],
include_dirs=[str(Path("core", "pe", "modules"))],
),
Extension(
"core.pe._cache",
[
str(Path("core", "pe", "modules", "cache.c")),
str(Path("core", "pe", "modules", "common.c")),
],
include_dirs=[str(Path("core", "pe", "modules"))],
),
Extension("qt.pe._block_qt", [str(Path("qt", "pe", "modules", "block.c"))]),
]
headers = [str(Path("core", "pe", "modules", "common.h"))]
setup(ext_modules=exts, headers=headers)