mirror of
https://github.com/arsenetar/dupeguru.git
synced 2026-01-24 23:51:38 +00:00
Compare commits
6 Commits
as/pyproje
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 16aa6c21ff | |||
|
|
c32a1246b5 | ||
| 7f61330dda | |||
|
eb4d791434
|
|||
|
e9948d9b3f
|
|||
|
|
c9aa6f1b7a |
12
.github/FUNDING.yml
vendored
12
.github/FUNDING.yml
vendored
@@ -1,13 +1 @@
|
|||||||
# 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']
|
|
||||||
|
|||||||
9
.github/workflows/codeql-analysis.yml
vendored
9
.github/workflows/codeql-analysis.yml
vendored
@@ -25,11 +25,10 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v1
|
uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
|
||||||
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.
|
||||||
@@ -44,7 +43,7 @@ jobs:
|
|||||||
make modules
|
make modules
|
||||||
- if: matrix.language == 'python'
|
- if: matrix.language == 'python'
|
||||||
name: Autobuild
|
name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v1
|
uses: github/codeql-action/autobuild@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
|
||||||
# Analysis
|
# Analysis
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v1
|
uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
|
||||||
|
|||||||
14
.github/workflows/default.yml
vendored
14
.github/workflows/default.yml
vendored
@@ -11,9 +11,9 @@ jobs:
|
|||||||
pre-commit:
|
pre-commit:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||||
- name: Set up Python 3.12
|
- name: Set up Python 3.12
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
|
||||||
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.7, 3.8, 3.9, "3.10", "3.11", "3.12"]
|
python-version: [3.8, 3.9, "3.10", "3.11", "3.12", "3.13", "3.14"]
|
||||||
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@v4
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||||
- name: Set up Python ${{ matrix.python-version }}
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
|
||||||
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@v4
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
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@v4
|
uses: actions/upload-artifact/merge@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
with:
|
with:
|
||||||
name: modules
|
name: modules
|
||||||
pattern: modules*
|
pattern: modules*
|
||||||
|
|||||||
2
.github/workflows/tx-push.yml
vendored
2
.github/workflows/tx-push.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
|||||||
push-source:
|
push-source:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||||
- 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
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ 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,
|
||||||
@@ -18,6 +17,7 @@ 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
|
||||||
sandbox.run_setup("setup.py", ["build_ext", "--inplace"])
|
subprocess.check_call([sys.executable, "setup.py", "build_ext", "--inplace"])
|
||||||
|
|
||||||
|
|
||||||
def build_normal():
|
def build_normal():
|
||||||
@@ -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 -= dupe.size
|
self.__total_size = max(0, 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)
|
||||||
|
|||||||
@@ -1,86 +1,9 @@
|
|||||||
[build-system]
|
[build-system]
|
||||||
requires = ["setuptools >= 75.3.1"]
|
requires = ["setuptools"]
|
||||||
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"]},
|
|
||||||
]
|
|
||||||
|
|||||||
4
requirements-extra.txt
Normal file
4
requirements-extra.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
pytest>=7,<8
|
||||||
|
flake8
|
||||||
|
black
|
||||||
|
pyinstaller>=5.6,<6.0; sys_platform != 'linux'
|
||||||
9
requirements.txt
Normal file
9
requirements.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
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
|
||||||
48
setup.cfg
Normal file
48
setup.cfg
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
[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
|
||||||
26
setup.py
Normal file
26
setup.py
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
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)
|
||||||
Reference in New Issue
Block a user