mirror of
https://github.com/arsenetar/dupeguru.git
synced 2026-01-25 08:01:39 +00:00
Compare commits
2 Commits
master
...
as/pyproje
| Author | SHA1 | Date | |
|---|---|---|---|
|
f26b515286
|
|||
|
9f83018a1a
|
12
.github/FUNDING.yml
vendored
12
.github/FUNDING.yml
vendored
@@ -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']
|
||||||
|
|||||||
9
.github/workflows/codeql-analysis.yml
vendored
9
.github/workflows/codeql-analysis.yml
vendored
@@ -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
|
||||||
|
|||||||
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@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*
|
||||||
|
|||||||
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@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
|
||||||
|
|||||||
@@ -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():
|
||||||
@@ -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)
|
||||||
|
|||||||
@@ -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"]},
|
||||||
|
]
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
pytest>=7,<8
|
|
||||||
flake8
|
|
||||||
black
|
|
||||||
pyinstaller>=5.6,<6.0; sys_platform != 'linux'
|
|
||||||
@@ -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
|
|
||||||
48
setup.cfg
48
setup.cfg
@@ -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
|
|
||||||
26
setup.py
26
setup.py
@@ -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)
|
|
||||||
Reference in New Issue
Block a user