Merge core_{se,me,pe} into core.{se,me,pe}

This commit is contained in:
Virgil Dupras 2016-05-31 22:32:37 -04:00
parent d4919054f9
commit a65077f871
39 changed files with 55 additions and 75 deletions

View File

@ -113,7 +113,7 @@ def build_xibless(dest='cocoa/autogen'):
def build_cocoa(dev):
print("Creating OS X app structure")
app = cocoa_app()
app_version = get_module_version('core_se')
app_version = get_module_version('core')
cocoa_project_path = 'cocoa/se'
filereplace(op.join(cocoa_project_path, 'InfoTemplate.plist'), op.join('build', 'Info.plist'), version=app_version)
app.create(op.join('build', 'Info.plist'))
@ -133,8 +133,7 @@ def build_cocoa(dev):
shutil.copy(op.join(cocoa_project_path, 'dg_cocoa.py'), 'build')
appscript_pkgs = ['appscript', 'aem', 'mactypes', 'osax']
tocopy = [
'core', 'core_se', 'core_me', 'core_pe', 'hscommon', 'cocoa/inter', 'cocoalib/cocoa',
'objp', 'send2trash', 'hsaudiotag',
'core', 'hscommon', 'cocoa/inter', 'cocoalib/cocoa', 'objp', 'send2trash', 'hsaudiotag',
] + appscript_pkgs
copy_packages(tocopy, pydep_folder, create_links=dev)
sys.path.insert(0, 'build')
@ -217,10 +216,9 @@ def build_updatepot():
loc.generate_cocoa_strings_from_code('cocoa', 'cocoa/base/en.lproj')
print("Building .pot files from source files")
print("Building core.pot")
all_cores = ['core', 'core_se', 'core_me', 'core_pe']
loc.generate_pot(all_cores, op.join('locale', 'core.pot'), ['tr'])
loc.generate_pot(['core'], op.join('locale', 'core.pot'), ['tr'])
print("Building columns.pot")
loc.generate_pot(all_cores, op.join('locale', 'columns.pot'), ['coltr'])
loc.generate_pot(['core'], op.join('locale', 'columns.pot'), ['coltr'])
print("Building ui.pot")
# When we're not under OS X, we don't want to overwrite ui.pot because it contains Cocoa locs
# We want to merge the generated pot with the old pot in the most preserving way possible.
@ -307,14 +305,21 @@ def build_cocoa_bridging_interfaces():
def build_pe_modules(ui):
print("Building PE Modules")
exts = [
Extension("_block", [op.join('core_pe', 'modules', 'block.c'), op.join('core_pe', 'modules', 'common.c')]),
Extension("_cache", [op.join('core_pe', 'modules', 'cache.c'), op.join('core_pe', 'modules', 'common.c')]),
Extension(
"_block",
[op.join('core', 'pe', 'modules', 'block.c'), op.join('core', 'pe', 'modules', 'common.c')]
),
Extension(
"_cache",
[op.join('core', 'pe', 'modules', 'cache.c'), op.join('core', 'pe', 'modules', 'common.c')]
),
]
if ui == 'qt':
exts.append(Extension("_block_qt", [op.join('qt', 'pe', 'modules', 'block.c')]))
elif ui == 'cocoa':
exts.append(Extension(
"_block_osx", [op.join('core_pe', 'modules', 'block_osx.m'), op.join('core_pe', 'modules', 'common.c')],
"_block_osx",
[op.join('core', 'pe', 'modules', 'block_osx.m'), op.join('core', 'pe', 'modules', 'common.c')],
extra_link_args=[
"-framework", "CoreFoundation",
"-framework", "Foundation",
@ -326,8 +331,8 @@ def build_pe_modules(ui):
ext_modules=exts,
)
move_all('_block_qt*', op.join('qt', 'pe'))
move_all('_block*', 'core_pe')
move_all('_cache*', 'core_pe')
move_all('_block*', op.join('core', 'pe'))
move_all('_cache*', op.join('core', 'pe'))
def build_normal(ui, dev):
print("Building dupeGuru with UI {}".format(ui))

View File

@ -21,18 +21,8 @@ from hscommon.util import delete_if_empty, first, escape, nonone, allsame
from hscommon.trans import tr
from hscommon import desktop
import core_se.fs
import core_se.result_table
import core_se.scanner
import core_me.fs
import core_me.prioritize
import core_me.result_table
import core_me.scanner
import core_pe.photo
import core_pe.prioritize
import core_pe.result_table
import core_pe.scanner
from core_pe.photo import get_delta_dimensions
from . import se, me, pe
from .pe.photo import get_delta_dimensions
from .util import cmp_value, fix_surrogate_encoding
from . import directories, results, export, fs, prioritize
from .ignore import IgnoreList
@ -166,11 +156,11 @@ class DupeGuru(Broadcaster):
#--- Private
def _create_result_table(self):
if self.app_mode == AppMode.Picture:
return core_pe.result_table.ResultTable(self)
return pe.result_table.ResultTable(self)
elif self.app_mode == AppMode.Music:
return core_me.result_table.ResultTable(self)
return me.result_table.ResultTable(self)
else:
return core_se.result_table.ResultTable(self)
return se.result_table.ResultTable(self)
def _get_dupe_sort_key(self, dupe, get_group, key, delta):
if self.app_mode in (AppMode.Music, AppMode.Picture):
@ -335,9 +325,9 @@ class DupeGuru(Broadcaster):
#--- Protected
def _prioritization_categories(self):
if self.app_mode == AppMode.Picture:
return core_pe.prioritize.all_categories()
return pe.prioritize.all_categories()
elif self.app_mode == AppMode.Music:
return core_me.prioritize.all_categories()
return me.prioritize.all_categories()
else:
return prioritize.all_categories()
@ -393,8 +383,7 @@ class DupeGuru(Broadcaster):
path = path.parent()
def clear_picture_cache(self):
from core_pe.cache import Cache
cache = Cache(self.options['cache_path'])
cache = pe.cache.Cache(self.options['cache_path'])
cache.clear()
cache.close()
@ -754,7 +743,7 @@ class DupeGuru(Broadcaster):
def do(j):
j.set_progress(0, tr("Collecting files to scan"))
if scanner.scan_type == ScanType.Folders:
files = list(self.directories.get_folders(folderclass=core_se.fs.folder, j=j))
files = list(self.directories.get_folders(folderclass=se.fs.folder, j=j))
else:
files = list(self.directories.get_files(fileclasses=self.fileclasses, j=j))
if self.options['ignore_hardlink_matches']:
@ -806,20 +795,20 @@ class DupeGuru(Broadcaster):
@property
def fileclasses(self):
if self.app_mode == AppMode.Picture:
return [core_pe.photo.PLAT_SPECIFIC_PHOTO_CLASS]
return [pe.photo.PLAT_SPECIFIC_PHOTO_CLASS]
elif self.app_mode == AppMode.Music:
return [core_me.fs.MusicFile]
return [me.fs.MusicFile]
else:
return [core_se.fs.File]
return [se.fs.File]
@property
def SCANNER_CLASS(self):
if self.app_mode == AppMode.Picture:
return core_pe.scanner.ScannerPE
return pe.scanner.ScannerPE
elif self.app_mode == AppMode.Music:
return core_me.scanner.ScannerME
return me.scanner.ScannerME
else:
return core_se.scanner.ScannerSE
return se.scanner.ScannerSE
@property
def METADATA_TO_READ(self):

1
core/me/__init__.py Normal file
View File

@ -0,0 +1 @@
from . import fs, prioritize, result_table, scanner # noqa

1
core/pe/__init__.py Normal file
View File

@ -0,0 +1 @@
from . import block, cache, exif, iphoto_plist, matchblock, matchexif, photo, prioritize, result_table, scanner # noqa

1
core/se/__init__.py Normal file
View File

@ -0,0 +1 @@
from . import fs, result_table, scanner # noqa

View File

@ -9,7 +9,7 @@ from pytest import raises, skip
from hscommon.testutil import eq_
try:
from ..block import avgdiff, getblocks2, NoBlocksError, DifferentBlockCountError
from ..pe.block import avgdiff, getblocks2, NoBlocksError, DifferentBlockCountError
except ImportError:
skip("Can't import the block module, probably hasn't been compiled.")

View File

@ -10,7 +10,7 @@ from pytest import raises, skip
from hscommon.testutil import eq_
try:
from ..cache import Cache, colors_to_string, string_to_colors
from ..pe.cache import Cache, colors_to_string, string_to_colors
except ImportError:
skip("Can't import the cache module, probably hasn't been compiled.")

View File

@ -12,6 +12,7 @@ from .. import fs
from ..engine import getwords, Match
from ..ignore import IgnoreList
from ..scanner import Scanner, ScanType
from ..me.scanner import ScannerME
class NamedObject:
def __init__(self, name="foobar", size=1, path=None):
@ -528,3 +529,13 @@ def test_dont_count_ref_files_as_discarded(fake_fileexists):
o2.is_ref = True
eq_(len(s.get_dupe_groups([o1, o2, o3])), 1)
eq_(s.discarded_file_count, 0)
def test_priorize_me(fake_fileexists):
# in ScannerME, bitrate goes first (right after is_ref) in priorization
s = ScannerME()
o1, o2 = no('foo', path='p1'), no('foo', path='p2')
o1.bitrate = 1
o2.bitrate = 2
[group] = s.get_dupe_groups([o1, o2])
assert group.ref is o2

View File

View File

@ -1,26 +0,0 @@
# Copyright 2016 Hardcoded Software (http://www.hardcoded.net)
#
# This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
# which should be included with this package. The terms are also available at
# http://www.gnu.org/licenses/gpl-3.0.html
from hscommon.path import Path
from core.tests.scanner_test import no
from ..scanner import ScannerME
def pytest_funcarg__fake_fileexists(request):
# This is a hack to avoid invalidating all previous tests since the scanner started to test
# for file existence before doing the match grouping.
monkeypatch = request.getfuncargvalue('monkeypatch')
monkeypatch.setattr(Path, 'exists', lambda _: True)
def test_priorize_me(fake_fileexists):
# in ScannerME, bitrate goes first (right after is_ref) in priorization
s = ScannerME()
o1, o2 = no('foo', path='p1'), no('foo', path='p2')
o1.bitrate = 1
o2.bitrate = 2
[group] = s.get_dupe_groups([o1, o2])
assert group.ref is o2

View File

View File

View File

@ -44,17 +44,16 @@ def copy_files_to_package(destpath, packages, with_so):
compileall.compile_dir(destpath)
def package_debian_distribution(distribution):
app_version = get_module_version('core_se')
app_version = get_module_version('core')
version = '{}~{}'.format(app_version, distribution)
destpath = op.join('build', 'dupeguru-{}'.format(version))
srcpath = op.join(destpath, 'src')
packages = [
'hscommon', 'core', 'core_se', 'core_me', 'core_pe', 'qtlib', 'qt', 'send2trash',
'hsaudiotag'
'hscommon', 'core', 'qtlib', 'qt', 'send2trash', 'hsaudiotag'
]
copy_files_to_package(srcpath, packages, with_so=False)
os.mkdir(op.join(destpath, 'modules'))
copy_all(op.join('core_pe', 'modules', '*.*'), op.join(destpath, 'modules'))
copy_all(op.join('core', 'pe', 'modules', '*.*'), op.join(destpath, 'modules'))
copy(op.join('qt', 'pe', 'modules', 'block.c'), op.join(destpath, 'modules', 'block_qt.c'))
copy(op.join('pkg', 'debian', 'build_pe_modules.py'), op.join(destpath, 'build_pe_modules.py'))
debdest = op.join(destpath, 'debian')
@ -92,8 +91,7 @@ def package_arch():
print("Packaging for Arch")
srcpath = op.join('build', 'dupeguru-arch')
packages = [
'hscommon', 'core', 'core_se', 'core_me', 'core_pe', 'qtlib', 'qt', 'send2trash',
'hsaudiotag',
'hscommon', 'core', 'qtlib', 'qt', 'send2trash', 'hsaudiotag',
]
copy_files_to_package(srcpath, packages, with_so=True)
shutil.copy(op.join('images', 'dgse_logo_128.png'), srcpath)
@ -105,7 +103,7 @@ def package_source_tgz():
print("Downloading PyPI dependencies")
print_and_do('./download_deps.sh')
print("Creating git archive")
app_version = get_module_version('core_se')
app_version = get_module_version('core')
name = 'dupeguru-src-{}.tar'.format(app_version)
dest = op.join('build', name)
print_and_do('git archive -o {} HEAD'.format(dest))

View File

@ -20,7 +20,7 @@ from qtlib.util import createActions
from qtlib.progress_window import ProgressWindow
from core.app import AppMode, DupeGuru as DupeGuruModel
import core_pe.photo
import core.pe.photo
from . import platform
from .preferences import Preferences
from .result_window import ResultWindow
@ -51,7 +51,7 @@ class DupeGuru(QObject):
#--- Private
def _setup(self):
core_pe.photo.PLAT_SPECIFIC_PHOTO_CLASS = PlatSpecificPhoto
core.pe.photo.PLAT_SPECIFIC_PHOTO_CLASS = PlatSpecificPhoto
self._setupActions()
self._update_options()
self.recentResults = Recent(self, 'recentResults')

View File

@ -8,7 +8,7 @@ import logging
from PyQt5.QtGui import QImage, QImageReader, QTransform
from core_pe.photo import Photo as PhotoBase
from core.pe.photo import Photo as PhotoBase
from .block import getblocks