1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-01-25 16:11:39 +00:00

Compare commits

..

2 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
11 changed files with 106 additions and 103 deletions

12
.github/FUNDING.yml vendored
View File

@@ -1 +1,13 @@
# These are supported funding model platforms
github: arsenetar github: arsenetar
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View File

@@ -25,10 +25,11 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 uses: github/codeql-action/init@v1
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
@@ -43,7 +44,7 @@ jobs:
make modules make modules
- if: matrix.language == 'python' - if: matrix.language == 'python'
name: Autobuild name: Autobuild
uses: github/codeql-action/autobuild@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 uses: github/codeql-action/autobuild@v1
# Analysis # Analysis
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 uses: github/codeql-action/analyze@v1

View File

@@ -11,9 +11,9 @@ jobs:
pre-commit: pre-commit:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/checkout@v4
- name: Set up Python 3.12 - name: Set up Python 3.12
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 uses: actions/setup-python@v5
with: with:
python-version: "3.12" python-version: "3.12"
- uses: pre-commit/action@v3.0.1 - uses: pre-commit/action@v3.0.1
@@ -23,7 +23,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest] os: [ubuntu-latest]
python-version: [3.8, 3.9, "3.10", "3.11", "3.12", "3.13", "3.14"] python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12"]
include: include:
- os: windows-latest - os: windows-latest
python-version: "3.12" python-version: "3.12"
@@ -31,9 +31,9 @@ jobs:
python-version: "3.12" python-version: "3.12"
steps: steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 uses: actions/setup-python@v5
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- name: Install dependencies - name: Install dependencies
@@ -49,7 +49,7 @@ jobs:
pytest core hscommon pytest core hscommon
- name: Upload Artifacts - name: Upload Artifacts
if: matrix.os == 'ubuntu-latest' if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 uses: actions/upload-artifact@v4
with: with:
name: modules ${{ matrix.python-version }} name: modules ${{ matrix.python-version }}
path: build/**/*.so path: build/**/*.so
@@ -58,7 +58,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Merge Artifacts - name: Merge Artifacts
uses: actions/upload-artifact/merge@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 uses: actions/upload-artifact/merge@v4
with: with:
name: modules name: modules
pattern: modules* pattern: modules*

View File

@@ -15,7 +15,7 @@ jobs:
push-source: push-source:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/checkout@v4
- name: Get Transifex Client - name: Get Transifex Client
run: | run: |
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash -s -- $TX_VERSION curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash -s -- $TX_VERSION

View File

@@ -10,6 +10,7 @@ from optparse import OptionParser
import shutil import shutil
from multiprocessing import Pool from multiprocessing import Pool
from setuptools import sandbox
from hscommon import sphinxgen from hscommon import sphinxgen
from hscommon.build import ( from hscommon.build import (
add_to_pythonpath, add_to_pythonpath,
@@ -17,7 +18,6 @@ from hscommon.build import (
fix_qt_resource_file, fix_qt_resource_file,
) )
from hscommon import loc from hscommon import loc
import subprocess
def parse_args(): def parse_args():
@@ -118,7 +118,7 @@ def build_normpo():
def build_pe_modules(): def build_pe_modules():
print("Building PE Modules") print("Building PE Modules")
# Leverage setup.py to build modules # Leverage setup.py to build modules
subprocess.check_call([sys.executable, "setup.py", "build_ext", "--inplace"]) sandbox.run_setup("setup.py", ["build_ext", "--inplace"])
def build_normal(): def build_normal():

View File

@@ -325,7 +325,7 @@ class Results(Markable):
del self.__group_of_duplicate[dupe] del self.__group_of_duplicate[dupe]
self._remove_mark_flag(dupe) self._remove_mark_flag(dupe)
self.__total_count -= 1 self.__total_count -= 1
self.__total_size = max(0, self.__total_size - dupe.size) self.__total_size -= dupe.size
if not group: if not group:
del self.__group_of_duplicate[ref] del self.__group_of_duplicate[ref]
self.__groups.remove(group) self.__groups.remove(group)

View File

@@ -1,9 +1,86 @@
[build-system] [build-system]
requires = ["setuptools"] requires = ["setuptools >= 75.3.1"]
build-backend = "setuptools.build_meta" build-backend = "setuptools.build_meta"
[project]
name = "dupeGuru"
description = "dupeGuru is a tool to find duplicate files on your computer."
authors = [
{name = "Andrew Senetar", email = "arsenetar@voltaicideas.net"}
]
readme = "README.md"
license = "GPL-3.0-or-later"
license-files = ["LICENSE"]
keywords = ["deduplication"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: End Users/Desktop",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Desktop Environment :: File Managers",
]
requires-python = ">=3.7, <3.13"
dynamic = ["version"]
dependencies = [
"distro>=1.8.0,<2.0.0",
"mutagen>=1.46.0,<2.0.0",
"polib>=1.1.0,<2.0.0",
"PyQt5 >=5.15.0,<6.0; sys_platform != 'linux'",
"pywin32>=304; sys_platform == 'win32'",
"semantic-version>=2.0.0,<3.0.0",
"Send2Trash>=1.8.2",
"xxhash>=3.0.0,<4.0.0",
]
[project.optional-dependencies]
dev = [
"pytest>=7,<8",
"flake8",
"black",
]
build = [
"dupeGuru[dev]",
"sphinx>=5.3.0,<8.0.0",
"pyinstaller>=5.6,<6.0; sys_platform != 'linux'"
]
[project.urls]
Homepage = "https://dupeguru.voltaicideas.net/"
Documentation = "https://dupeguru.voltaicideas.net/help/en/"
Repository = "https://github.com/arsenetar/dupeguru.git"
Issues = "https://github.com/arsenetar/dupeguru/issues"
Releases = "https://github.com/arsenetar/dupeguru/releases"
[project.gui-scripts]
dupeguru = "dupeguru.__main__:main"
[tool.black] [tool.black]
line-length = 120 line-length = 120
[tool.isort] [tool.isort]
# make it compatible with black # make it compatible with black
profile = "black" profile = "black"
skip_gitignore = true skip_gitignore = true
[tool.setuptools.packages.find]
include = ["core", "hscommon", "qt"]
[tool.setuptools.dynamic]
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,4 +0,0 @@
pytest>=7,<8
flake8
black
pyinstaller>=5.6,<6.0; sys_platform != 'linux'

View File

@@ -1,9 +0,0 @@
distro>=1.8.0,<2.0.0
mutagen>=1.46.0,<2.0.0
polib>=1.1.0,<2.0.0
PyQt5 >=5.15.0,<6.0; sys_platform != 'linux'
pywin32>=304; sys_platform == 'win32'
semantic-version>=2.0.0,<3.0.0
Send2Trash>=1.8.2,<2.0.0
sphinx>=5.3.0,<8.0.0
xxhash>=3.0.0,<4.0.0

View File

@@ -1,48 +0,0 @@
[metadata]
name = dupeGuru
version = attr: core.__version__
url = https://github.com/arsenetar/dupeguru
project_urls =
Bug Reports = https://github.com/arsenetar/dupeguru/issues
author = Andrew Senetar
author_email = arsenetar@voltaicideas.net
license = GPLv3
license_files = license
description = dupeGuru is a tool to find duplicate files on your computer.
long_description = file:README.md
long_description_content_type = text/markdown
classifiers =
Development Status :: 5 - Production/Stable
Intended Audience :: End Users/Desktop
License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Operating System :: MacOS :: MacOS X
Operating System :: Microsoft :: Windows
Operating System :: POSIX
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3 :: Only
Topic :: Desktop Environment :: File Managers
[options]
packages = find:
python_requires = >=3.7
install_requires =
Send2Trash>=1.8.2,<2.0.0
mutagen>=1.46.0,<2.0.0
distro>=1.8.0,<2.0.0
PyQt5 >=5.15.0,<6.0; sys_platform != 'linux'
pywin32>=228; sys_platform == 'win32'
semantic-version>=2.0.0,<3.0.0
xxhash>=3.0.0,<4.0.0
setup_requires =
sphinx>=3.0.0
polib>=1.1.0
tests_require =
pytest >=6,<7
include_package_data = true
[options.entry_points]
console_scripts =
dupeguru = run.py

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)