1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2025-05-11 11:19:48 +00:00

Merge Changes from hsoft/master

Merge to update
This commit is contained in:
Andrew Senetar 2017-10-07 14:01:13 -05:00
commit 51b632e1d1
6 changed files with 119 additions and 106 deletions

View File

@ -1,4 +1,5 @@
PYTHON ?= python3
PYTHON_VERSION_MINOR := $(shell ${PYTHON} -c "import sys; print(sys.version_info.minor)")
PYRCC5 ?= pyrcc5
REQ_MINOR_VERSION = 4
PREFIX ?= /usr/local
@ -10,11 +11,11 @@ PREFIX ?= /usr/local
ifeq ($(shell uname -o), Msys)
BIN = Scripts
SO = pyd
SO = *.pyd
VENV_OPTIONS =
else
BIN = bin
SO = so
SO = cpython-3$(PYTHON_VERSION_MINOR)m*.so
VENV_OPTIONS = --system-site-packages
endif
@ -53,11 +54,9 @@ pyc:
${PYTHON} -m compileall ${packages}
reqs :
@ret=`${PYTHON} -c "import sys; print(int(sys.version_info[:2] >= (3, ${REQ_MINOR_VERSION})))"`; \
if [ $${ret} -ne 1 ]; then \
echo "Python 3.${REQ_MINOR_VERSION}+ required. Aborting."; \
exit 1; \
fi
ifneq ($(shell test $(PYTHON_VERSION_MINOR) -gt $(REQ_MINOR_VERSION); echo $$?),0)
$(error "Python 3.${REQ_MINOR_VERSION}+ required. Aborting.")
endif
ifndef NO_VENV
@${PYTHON} -m venv -h > /dev/null || \
echo "Creation of our virtualenv failed. If you're on Ubuntu, you probably need python3-venv."
@ -91,19 +90,19 @@ i18n: $(mofiles)
%.mo : %.po
msgfmt -o $@ $<
core/pe/_block.*.$(SO) : core/pe/modules/block.c core/pe/modules/common.c | env
$(VENV_PYTHON) hscommon/build_ext.py $^ _block
mv _block.*.$(SO) core/pe
core/pe/_block.$(SO) : core/pe/modules/block.c core/pe/modules/common.c
$(PYTHON) hscommon/build_ext.py $^ _block
mv _block.$(SO) core/pe
core/pe/_cache.*.$(SO) : core/pe/modules/cache.c core/pe/modules/common.c | env
$(VENV_PYTHON) hscommon/build_ext.py $^ _cache
mv _cache.*.$(SO) core/pe
core/pe/_cache.$(SO) : core/pe/modules/cache.c core/pe/modules/common.c
$(PYTHON) hscommon/build_ext.py $^ _cache
mv _cache.$(SO) core/pe
qt/pe/_block_qt.*.$(SO) : qt/pe/modules/block.c | env
$(VENV_PYTHON) hscommon/build_ext.py $^ _block_qt
mv _block_qt.*.$(SO) qt/pe
qt/pe/_block_qt.$(SO) : qt/pe/modules/block.c
$(PYTHON) hscommon/build_ext.py $^ _block_qt
mv _block_qt.$(SO) qt/pe
modules : core/pe/_block.*.$(SO) core/pe/_cache.*.$(SO) qt/pe/_block_qt.*.$(SO)
modules : core/pe/_block.$(SO) core/pe/_cache.$(SO) qt/pe/_block_qt.$(SO)
mergepot :
$(VENV_PYTHON) build.py --mergepot

View File

@ -126,6 +126,11 @@ class ShelveCache:
continue
todelete.append(path)
for path in todelete:
del self[path]
try:
del self[path]
except KeyError:
# I have no idea why a KeyError sometimes happen, but it does, as we can see in
# #402 and #439. I don't think it hurts to silently ignore the error, so that's
# what we do
pass

View File

@ -45,7 +45,7 @@ msgstr "Modificato"
#: core/me/prioritize.py:18
msgid "Duration"
msgstr ""
msgstr "Durata"
#: core/me/prioritize.py:24 core/me/result_table.py:22
msgid "Bitrate"
@ -53,7 +53,7 @@ msgstr "Bitrate"
#: core/me/prioritize.py:30
msgid "Samplerate"
msgstr ""
msgstr "Campionamento"
#: core/me/result_table.py:20
msgid "Size (MB)"
@ -119,4 +119,4 @@ msgstr "Dimensione (KB)"
#: core/pe/result_table.py:23
msgid "EXIF Timestamp"
msgstr ""
msgstr "Data EXIF"

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dupeGuru\n"
"PO-Revision-Date: 2013-12-07 15:22+0000\n"
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
"Last-Translator: auanasgheps\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/dupeguru/language/it/)\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: utf-8\n"
@ -12,17 +12,18 @@ msgstr ""
#: core/app.py:40
msgid "There are no marked duplicates. Nothing has been done."
msgstr ""
msgstr "Non ci sono duplicati marcati. Nessuna operazione è stata completata."
#: core/app.py:41
msgid "There are no selected duplicates. Nothing has been done."
msgstr ""
msgstr "Non ci sono duplicati selezionati. Nessuna operazione è stata completata."
#: core/app.py:42
msgid ""
"You're about to open many files at once. Depending on what those files are "
"opened with, doing so can create quite a mess. Continue?"
msgstr ""
msgstr "Stai per aprire molti file contemporaneamente. A seconda di quale programma
li aprirà, potrebbe crearsi un bel casino. Vuoi continuare?"
#: core/app.py:65
msgid "Scanning for duplicates"
@ -66,7 +67,7 @@ msgstr "Tutti i file marcati sono stati spostati correttamente."
#: core/app.py:306
msgid "All marked files were successfully sent to Trash."
msgstr "Tutti i file marcati sono stati inviati nel cestino."
msgstr "Tutti i file marcati sono stati spostati nel cestino."
#: core/app.py:368
msgid "'{}' already is in the list."
@ -86,19 +87,19 @@ msgstr ""
#: core/app.py:450
msgid "copy"
msgstr ""
msgstr "copiare"
#: core/app.py:450
msgid "move"
msgstr ""
msgstr "spostare"
#: core/app.py:451
msgid "Select a directory to {} marked files to"
msgstr ""
msgstr "Seleziona una cartella per {} in essa i file marcati"
#: core/app.py:490
msgid "Select a destination for your exported CSV"
msgstr ""
msgstr "Seleziona una destinazione per il file CSV"
#: core/app.py:518
msgid "You have no custom command set up. Set it up in your preferences."
@ -112,7 +113,7 @@ msgstr "Stai per rimuovere %d file dai risultati. Continuare?"
#: core/app.py:719
msgid "{} duplicate groups were changed by the re-prioritization."
msgstr ""
msgstr "{} gruppi duplicati sono stati cambiati dalla nuova priorirità"
#: core/app.py:762
msgid "Collecting files to scan"
@ -140,7 +141,7 @@ msgstr "Lettura dimensione di %d/%d file"
#: core/gui/deletion_options.py:69
msgid "You are sending {} file(s) to the Trash."
msgstr ""
msgstr "Stai spostando {} file al Cestino."
#: core/gui/ignore_list_dialog.py:24
msgid "Do you really want to remove all %d items from the ignore list?"
@ -150,7 +151,7 @@ msgstr ""
#: core/prioritize.py:68
msgid "None"
msgstr ""
msgstr "Nessuno"
#: core/prioritize.py:96
msgid "Ends with number"
@ -162,11 +163,11 @@ msgstr "Non termina con un numero"
#: core/prioritize.py:98
msgid "Longest"
msgstr ""
msgstr "Più lungo"
#: core/prioritize.py:99
msgid "Shortest"
msgstr ""
msgstr "Più corto"
#: core/prioritize.py:132
msgid "Highest"
@ -214,47 +215,47 @@ msgstr "Verificate %d/%d somiglianze"
#: core/pe/matchexif.py:18
msgid "Read EXIF of %d/%d pictures"
msgstr ""
msgstr "Leggi dati EXIF da %d/%d immagini"
#: core/app.py:312
msgid "Could not load file: {}"
msgstr ""
msgstr "Impossibile caricare il file: {}"
#: core/app.py:496 core/app.py:742
msgid "Couldn't write to file: {}"
msgstr ""
msgstr "Impossibile modificare il file: {}"
#: core/me/scanner.py:19 core/se/scanner.py:15
msgid "Filename"
msgstr ""
msgstr "Nome del file"
#: core/me/scanner.py:20
msgid "Filename - Fields"
msgstr ""
msgstr "Nome file - Campi"
#: core/me/scanner.py:21
msgid "Filename - Fields (No Order)"
msgstr ""
msgstr "Nome file - Campi (Nessun Ordine)"
#: core/me/scanner.py:22
msgid "Tags"
msgstr ""
msgstr "Tag"
#: core/me/scanner.py:23 core/pe/scanner.py:20 core/se/scanner.py:16
msgid "Contents"
msgstr ""
msgstr "Contenuti"
#: core/pe/scanner.py:21
msgid "EXIF Timestamp"
msgstr ""
msgstr "Timestamp EXIF"
#: core/scanner.py:139
msgid "Almost done! Fiddling with results..."
msgstr ""
msgstr "Quasi finito! Sto organizzando i risultati..."
#: core/se/scanner.py:17
msgid "Folders"
msgstr ""
msgstr "Cartelle"
#~ msgid "Sending files to the recycle bin"
#~ msgstr "Spostamento nel cestino"

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dupeGuru\n"
"PO-Revision-Date: 2013-12-07 15:22+0000\n"
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
"Last-Translator: auanasgheps\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/dupeguru/language/it/)\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: utf-8\n"
@ -12,12 +12,12 @@ msgstr ""
#: qt/app.py:81
msgid "Quit"
msgstr ""
msgstr "Esci"
#: qt/app.py:83 qt/ignore_list_dialog.py:32
#: cocoa/en.lproj/Localizable.strings:0
msgid "Ignore List"
msgstr ""
msgstr "Lista elementi ignorati"
#: qt/app.py:85 cocoa/en.lproj/Localizable.strings:0
msgid "dupeGuru Help"
@ -29,55 +29,60 @@ msgstr "Informazioni su dupeGuru"
#: qt/app.py:87
msgid "Open Debug Log"
msgstr ""
msgstr "Apri registro eventi"
#: qt/app.py:251
msgid "{} file (*.{})"
msgstr ""
msgstr "{} file (*.{})"
#: qt/deletion_options.py:30 cocoa/en.lproj/Localizable.strings:0
msgid "Deletion Options"
msgstr ""
msgstr "Opzioni di eliminazione"
#: qt/deletion_options.py:35 cocoa/en.lproj/Localizable.strings:0
msgid "Link deleted files"
msgstr ""
msgstr "Collega file eliminati"
#: qt/deletion_options.py:37 cocoa/en.lproj/Localizable.strings:0
msgid ""
"After having deleted a duplicate, place a link targeting the reference file "
"to replace the deleted file."
msgstr ""
"Dopo aver selezionato un duplicato, per sostituire il file eliminato posiziona un collegamento "
"che ha come destinazione i file di referenza."
#: qt/deletion_options.py:44
msgid "Hardlink"
msgstr ""
msgstr "Hardlink"
#: qt/deletion_options.py:44
msgid "Symlink"
msgstr ""
msgstr "Symlink"
#: qt/deletion_options.py:48
msgid " (unsupported)"
msgstr ""
msgstr " (non supportato)"
#: qt/deletion_options.py:49 cocoa/en.lproj/Localizable.strings:0
msgid "Directly delete files"
msgstr ""
msgstr "Elimina file direttamente"
#: qt/deletion_options.py:51 cocoa/en.lproj/Localizable.strings:0
msgid ""
"Instead of sending files to trash, delete them directly. This option is "
"usually used as a workaround when the normal deletion method doesn't work."
msgstr ""
"Invece di spostare file nel cestino, eliminali direttamente. Questa opzione "
"di solito è usata come alternativa al sistema di eliminazione standard quando "
"non funziona."
#: qt/deletion_options.py:59 cocoa/en.lproj/Localizable.strings:0
msgid "Proceed"
msgstr ""
msgstr "Procedi"
#: qt/deletion_options.py:60 cocoa/en.lproj/Localizable.strings:0
msgid "Cancel"
msgstr "Cancella"
msgstr "Annulla"
#: qt/details_table.py:16 cocoa/en.lproj/Localizable.strings:0
msgid "Attribute"
@ -94,7 +99,7 @@ msgstr "Riferimento"
#: qt/directories_dialog.py:64 cocoa/en.lproj/Localizable.strings:0
msgid "Load Results..."
msgstr "Carica i risultati..."
msgstr "Caricamento risultati..."
#: qt/directories_dialog.py:65 cocoa/en.lproj/Localizable.strings:0
msgid "Results Window"
@ -102,7 +107,7 @@ msgstr "Finestra dei risultati"
#: qt/directories_dialog.py:66
msgid "Add Folder..."
msgstr ""
msgstr "Aggiungi Cartella..."
#: qt/directories_dialog.py:74 qt/result_window.py:100
#: cocoa/en.lproj/Localizable.strings:0
@ -111,7 +116,7 @@ msgstr "File"
#: qt/directories_dialog.py:76 qt/result_window.py:108
msgid "View"
msgstr ""
msgstr "Visualizzazione"
#: qt/directories_dialog.py:78 qt/result_window.py:110
#: cocoa/en.lproj/Localizable.strings:0
@ -136,7 +141,7 @@ msgstr "Scansiona"
#: qt/directories_dialog.py:230
msgid "Unsaved results"
msgstr ""
msgstr "Risultati non salvati"
#: qt/directories_dialog.py:231 cocoa/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to quit?"
@ -144,9 +149,7 @@ msgstr "Hai dei risultati non salvati. Vuoi veramente chiudere?"
#: qt/directories_dialog.py:239 cocoa/en.lproj/Localizable.strings:0
msgid "Select a folder to add to the scanning list"
msgstr ""
"Seleziona una cartella da aggiungere alla lista delle cartelle da "
"scansionare"
msgstr "Seleziona una cartella da aggiungere alla lista delle cartelle da scansionare"
#: qt/directories_dialog.py:266 cocoa/en.lproj/Localizable.strings:0
msgid "Select a results file to load"
@ -154,15 +157,15 @@ msgstr "Seleziona un risultato (file) da caricare"
#: qt/directories_dialog.py:267
msgid "All Files (*.*)"
msgstr ""
msgstr "Tutti i file (*.*)"
#: qt/directories_dialog.py:267 qt/result_window.py:311
msgid "dupeGuru Results (*.dupeguru)"
msgstr ""
msgstr "Risultati dupeGuru (*.dupeguru)"
#: qt/directories_dialog.py:278
msgid "Start a new scan"
msgstr ""
msgstr "Inizia una nuova scansione"
#: qt/directories_dialog.py:279 cocoa/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to continue?"
@ -186,11 +189,11 @@ msgstr "Normale"
#: qt/ignore_list_dialog.py:45 cocoa/en.lproj/Localizable.strings:0
msgid "Remove Selected"
msgstr ""
msgstr "Rimuovi Selezionati"
#: qt/ignore_list_dialog.py:46 cocoa/en.lproj/Localizable.strings:0
msgid "Clear"
msgstr ""
msgstr "Deseleziona"
#: qt/ignore_list_dialog.py:47 qt/problem_dialog.py:61
#: cocoa/en.lproj/Localizable.strings:0
@ -199,19 +202,19 @@ msgstr "Chiudi"
#: qt/directories_dialog.py:128 cocoa/en.lproj/Localizable.strings:0
msgid "Scan Type:"
msgstr ""
msgstr "Tipo di scansione:"
#: qt/preferences_dialog.py:43
msgid "Filter Hardness:"
msgstr ""
msgstr "Durezza del filtro:"
#: qt/preferences_dialog.py:69
msgid "More Results"
msgstr ""
msgstr "Più risultati"
#: qt/preferences_dialog.py:74
msgid "Fewer Results"
msgstr ""
msgstr "Meno risultati"
#: qt/preferences_dialog.py:81
msgid "Font size:"
@ -219,7 +222,7 @@ msgstr "Dimensione carattere:"
#: qt/preferences_dialog.py:85
msgid "Language:"
msgstr ""
msgstr "Lingua:"
#: qt/preferences_dialog.py:91 cocoa/en.lproj/Localizable.strings:0
msgid "Copy and Move:"
@ -244,7 +247,7 @@ msgstr ""
#: qt/preferences_dialog.py:174
msgid "dupeGuru has to restart for language changes to take effect."
msgstr ""
msgstr "Per cambiare lingua, dupeGuru deve riavviarsi."
#: qt/prioritize_dialog.py:75 cocoa/en.lproj/Localizable.strings:0
msgid "Re-Prioritize duplicates"
@ -299,15 +302,15 @@ msgstr "Visualizza le differenze"
#: qt/result_window.py:60
msgid "Send Marked to Recycle Bin..."
msgstr ""
msgstr "Sposta elementi marcati nel Cestino..."
#: qt/result_window.py:61 cocoa/en.lproj/Localizable.strings:0
msgid "Move Marked to..."
msgstr "Sposta gli elementi marcati nel..."
msgstr "Sposta elementi marcati nel..."
#: qt/result_window.py:62 cocoa/en.lproj/Localizable.strings:0
msgid "Copy Marked to..."
msgstr "Copia gli elementi evidenziati nel..."
msgstr "Copia elementi evidenziati nel..."
#: qt/result_window.py:63 cocoa/en.lproj/Localizable.strings:0
msgid "Remove Marked from Results"
@ -335,7 +338,7 @@ msgstr "Apri gli elementi selezionati con l'applicazione predefinita"
#: qt/result_window.py:80
msgid "Open Containing Folder of Selected"
msgstr ""
msgstr "Apri cartella degli elementi selezionati"
#: qt/result_window.py:82 cocoa/en.lproj/Localizable.strings:0
msgid "Rename Selected"
@ -359,11 +362,11 @@ msgstr "Marca i selezionati"
#: qt/result_window.py:87
msgid "Export To HTML"
msgstr ""
msgstr "Esporta in HTML"
#: qt/result_window.py:88
msgid "Export To CSV"
msgstr ""
msgstr "Esporta in CSV"
#: qt/result_window.py:89 cocoa/en.lproj/Localizable.strings:0
msgid "Save Results..."
@ -375,7 +378,7 @@ msgstr "Invoca comando personalizzato"
#: qt/result_window.py:102
msgid "Mark"
msgstr ""
msgstr "Marca"
#: qt/result_window.py:106 cocoa/en.lproj/Localizable.strings:0
msgid "Columns"
@ -387,7 +390,7 @@ msgstr "Ripristina impostazioni predefinite"
#: qt/result_window.py:185
msgid "{} Results"
msgstr ""
msgstr "{} Resultati"
#: qt/result_window.py:193 cocoa/en.lproj/Localizable.strings:0
msgid "Dupes Only"
@ -395,7 +398,7 @@ msgstr "Solo duplicati"
#: qt/result_window.py:194
msgid "Delta Values"
msgstr ""
msgstr "Valori Delta"
#: qt/result_window.py:310 cocoa/en.lproj/Localizable.strings:0
msgid "Select a file to save your results to"
@ -484,7 +487,7 @@ msgstr ""
#: qt/se/preferences_dialog.py:41
msgid "Ignore files smaller than"
msgstr ""
msgstr "Ignora file più piccoli di"
#: qt/se/preferences_dialog.py:52 cocoa/en.lproj/Localizable.strings:0
msgid "KB"
@ -492,7 +495,7 @@ msgstr "KB"
#: cocoa/en.lproj/Localizable.strings:0
msgid "%@ Results"
msgstr ""
msgstr "%@ Resultati"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Action"
@ -557,7 +560,7 @@ msgstr "Cartelle"
#: cocoa/en.lproj/Localizable.strings:0
msgid "dupeGuru"
msgstr ""
msgstr "dupeGuru"
#: cocoa/en.lproj/Localizable.strings:0
msgid "dupeGuru Preferences"
@ -573,11 +576,11 @@ msgstr "Sito Web di dupeGuru"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Edit"
msgstr "Edita"
msgstr "Modifica"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Export Results to CSV"
msgstr ""
msgstr "Esporta risultati in CSV"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Export Results to XHTML"
@ -597,7 +600,7 @@ msgstr "Durezza del filtro:"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Filter Results..."
msgstr ""
msgstr "Filtra Risultati..."
#: cocoa/en.lproj/Localizable.strings:0
msgid "Folder Selection Window"
@ -605,7 +608,7 @@ msgstr "Finestra di selezione della cartella"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Font Size:"
msgstr ""
msgstr "Dimensione Carattere:"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Hide dupeGuru"
@ -654,7 +657,7 @@ msgstr "Preferenze..."
#: cocoa/en.lproj/Localizable.strings:0
msgid "Quick Look"
msgstr ""
msgstr "Sguardo rapido"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Quit dupeGuru"
@ -666,7 +669,7 @@ msgstr "Ripristina le impostazioni predefinite"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Reset To Defaults"
msgstr ""
msgstr "Imposta prefefinite"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Reveal"
@ -678,7 +681,7 @@ msgstr "Mostra gli elementi selezionati nel Finder"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Select All"
msgstr ""
msgstr "Seleziona tutto"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Send Marked to Trash..."
@ -686,7 +689,7 @@ msgstr "Sposta gli elementi marcati nel cestino..."
#: cocoa/en.lproj/Localizable.strings:0
msgid "Services"
msgstr ""
msgstr "Servizi"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Show All"
@ -710,23 +713,23 @@ msgstr "Zoom"
#: qt/directories_dialog.py:116 cocoa/en.lproj/Localizable.strings:0
msgid "Application Mode:"
msgstr ""
msgstr "Modalità applicazione:"
#: qt/directories_dialog.py:121 cocoa/en.lproj/Localizable.strings:0
msgid "Music"
msgstr ""
msgstr "Musica"
#: qt/directories_dialog.py:121 cocoa/en.lproj/Localizable.strings:0
msgid "Picture"
msgstr ""
msgstr "Foto"
#: qt/directories_dialog.py:121 cocoa/en.lproj/Localizable.strings:0
msgid "Standard"
msgstr ""
msgstr "Standard"
#: qt/directories_dialog.py:135
msgid "More Options"
msgstr ""
msgstr "Più Opzioni"
#~ msgid "Removing dead tracks from your iTunes Library"
#~ msgstr "Rimozione delle tracce insistenti dalla libreria di iTunes"
@ -765,10 +768,10 @@ msgstr ""
#~ msgstr "Non trovo l'applicazione iPhoto."
#~ msgid "Preferences"
#~ msgstr ""
#~ msgstr "Impostazioni"
#~ msgid "Check for Update"
#~ msgstr ""
#~ msgstr "Controlla aggiornamenti"
#~ msgid "Filename"
#~ msgstr "Nome del file"
@ -786,7 +789,7 @@ msgstr ""
#~ msgstr "Contenuti"
#~ msgid "Audio Contents"
#~ msgstr ""
#~ msgstr "Contenuti Audio"
#~ msgid "EXIF Timestamp"
#~ msgstr "Data e ora EXIF"

View File

@ -4,7 +4,12 @@ skipsdist = True
skip_missing_interpreters = True
[testenv]
whitelist_externals =
make
setenv =
PYTHON="{envpython}"
commands =
make modules
flake8
py.test core hscommon
deps =