From 01bb72e14c212ac166e9e291bce0672180d60ccb Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Mon, 22 Apr 2019 10:28:50 +0200 Subject: [PATCH] start migrating the project to a package --- Makefile | 4 +- borg_qt/__init__.py | 0 borg_qt/{borg_qt.py => __main__.py} | 4 +- borg_qt/borg_interface.py | 4 +- borg_qt/config.py | 4 +- borg_qt/help.py | 2 - borg_qt/helper.py | 2 +- borg_qt/main_window.py | 12 ++-- borg_qt/progress.py | 1 - setup.py | 88 +++++++++++++++++++++++++++++ tests/test_borg.py | 5 +- tests/test_config.py | 4 +- tests/test_systemd.py | 2 +- 13 files changed, 107 insertions(+), 25 deletions(-) create mode 100644 borg_qt/__init__.py rename borg_qt/{borg_qt.py => __main__.py} (84%) create mode 100644 setup.py diff --git a/Makefile b/Makefile index bcec8e9..fe0a13b 100644 --- a/Makefile +++ b/Makefile @@ -7,8 +7,8 @@ dist/borg-qt: venv . venv/bin/activate; \ pyinstaller --hidden-import=PyQt5.sip \ --add-data=borg_qt/static/icons:static/icons \ - --add-data=borg_qt/static/UI:static/UI \ - -F borg_qt/borg_qt.py; \ + --add-data=borg_qt/static/UI:static/UI -n borg_qt\ + -F borg_qt/__main__.py; \ ) venv: venv/bin/activate diff --git a/borg_qt/__init__.py b/borg_qt/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/borg_qt/borg_qt.py b/borg_qt/__main__.py similarity index 84% rename from borg_qt/borg_qt.py rename to borg_qt/__main__.py index bce3391..abd0c13 100755 --- a/borg_qt/borg_qt.py +++ b/borg_qt/__main__.py @@ -3,8 +3,8 @@ import sys from PyQt5.QtWidgets import QApplication -from main_window import MainWindow -from helper import get_parser +from borg_qt.main_window import MainWindow +from borg_qt.helper import get_parser if __name__ == "__main__": diff --git a/borg_qt/borg_interface.py b/borg_qt/borg_interface.py index 530944e..d460f39 100644 --- a/borg_qt/borg_interface.py +++ b/borg_qt/borg_interface.py @@ -1,11 +1,9 @@ -import os -import shutil import subprocess import json from PyQt5.QtCore import QThread -from helper import BorgException, show_error +from borg_qt.helper import BorgException, show_error class BorgQtThread(QThread): diff --git a/borg_qt/config.py b/borg_qt/config.py index 9226f4d..9317b85 100644 --- a/borg_qt/config.py +++ b/borg_qt/config.py @@ -9,8 +9,8 @@ from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QDialog, QFileDialog from PyQt5 import uic -from helper import BorgException -from systemd import SystemdFile +from borg_qt.helper import BorgException +from borg_qt.systemd import SystemdFile class Config(QDialog): diff --git a/borg_qt/help.py b/borg_qt/help.py index 4e39c48..42209f4 100644 --- a/borg_qt/help.py +++ b/borg_qt/help.py @@ -1,9 +1,7 @@ import os -from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QDialog from PyQt5 import uic -from PyQt5.QtGui import QIcon, QPixmap class Help(QDialog): diff --git a/borg_qt/helper.py b/borg_qt/helper.py index 3ef0114..834a7c6 100644 --- a/borg_qt/helper.py +++ b/borg_qt/helper.py @@ -2,7 +2,7 @@ import argparse import os import math import shutil -from PyQt5.QtCore import QCoreApplication, QUrl +from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QMessageBox from PyQt5.QtGui import QDesktopServices diff --git a/borg_qt/main_window.py b/borg_qt/main_window.py index 26091ba..d53b5d3 100644 --- a/borg_qt/main_window.py +++ b/borg_qt/main_window.py @@ -6,12 +6,12 @@ from PyQt5.QtCore import QCoreApplication from PyQt5.QtWidgets import (QMainWindow, QFileSystemModel, QFileDialog, QMessageBox) -from config import Config -from helper import (BorgException, show_error, convert_size, open_path, - create_path, remove_path, check_path) -from help import Help -import borg_interface as borg -from progress import ProgressDialog +from borg_qt.config import Config +from borg_qt.helper import (BorgException, show_error, convert_size, open_path, + create_path, remove_path, check_path) +from borg_qt.help import Help +import borg_qt.borg_interface as borg +from borg_qt.progress import ProgressDialog class MainWindow(QMainWindow): diff --git a/borg_qt/progress.py b/borg_qt/progress.py index e034285..410f39f 100644 --- a/borg_qt/progress.py +++ b/borg_qt/progress.py @@ -1,5 +1,4 @@ import os -import time from PyQt5.QtWidgets import QDialog from PyQt5 import uic diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..1267ded --- /dev/null +++ b/setup.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# Note: To use the 'upload' functionality of this file, you must: +# $ pip install twine + +import io +import os + +from setuptools import find_packages, setup + +# Package meta-data. +NAME = 'borg_qt' +DESCRIPTION = 'A graphical frontend for BorgBackup.' +URL = 'https://github.com/borg-qt/borg-qt.git' +EMAIL = '' +AUTHOR = 'Andreas Zweili' +REQUIRES_PYTHON = '>=3.6.0' +VERSION = '2019-02-23' + +# What packages are required for this module to be executed? +REQUIRED = [ + 'PyQt5', 'borgbackup[fuse]==1.1.8', +] + +# What packages are optional? +EXTRAS = { + # 'fancy feature': ['django'], +} + +# The rest you shouldn't have to touch too much :) +# ------------------------------------------------ +# Except, perhaps the License and Trove Classifiers! +# If you do change the License, remember to change the Trove Classifier for that! + +here = os.path.abspath(os.path.dirname(__file__)) + +# Import the README and use it as the long-description. +# Note: this will only work if 'README.md' is present in your MANIFEST.in file! +try: + with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f: + long_description = '\n' + f.read() +except FileNotFoundError: + long_description = DESCRIPTION + +# Load the package's __version__.py module as a dictionary. +about = {} +if not VERSION: + project_slug = NAME.lower().replace("-", "_").replace(" ", "_") + with open(os.path.join(here, project_slug, '__version__.py')) as f: + exec(f.read(), about) +else: + about['__version__'] = VERSION + + +# Where the magic happens: +setup( + name=NAME, + version=about['__version__'], + description=DESCRIPTION, + long_description=long_description, + long_description_content_type='text/markdown', + author=AUTHOR, + author_email=EMAIL, + python_requires=REQUIRES_PYTHON, + url=URL, + packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]), + # If your package is a single module, use this instead of 'packages': + # py_modules=['mypackage'], + + # entry_points={ + # 'console_scripts': ['mycli=mymodule:cli'], + # }, + install_requires=REQUIRED, + extras_require=EXTRAS, + include_package_data=True, + license='GPLv3', + classifiers=[ + # Trove classifiers + # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers + 'License :: OSI Approved :: GNU Public License v3', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: Implementation :: CPython', + 'Programming Language :: Python :: Implementation :: PyPy' + ], +) diff --git a/tests/test_borg.py b/tests/test_borg.py index 0d703c7..92d4c69 100644 --- a/tests/test_borg.py +++ b/tests/test_borg.py @@ -5,9 +5,8 @@ from time import strftime from PyQt5.QtWidgets import QApplication -import context -import borg_interface as borg -from helper import create_path +import borg_qt.borg_interface as borg +from borg_qt.helper import create_path app = QApplication(sys.argv) diff --git a/tests/test_config.py b/tests/test_config.py index fa2e5e0..98c6be5 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -9,8 +9,8 @@ from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication from PyQt5.QtTest import QTest -from main_window import MainWindow -from helper import BorgException +from borg_qt.main_window import MainWindow +from borg_qt.helper import BorgException app = QApplication(sys.argv) diff --git a/tests/test_systemd.py b/tests/test_systemd.py index cb025c5..439c1ae 100644 --- a/tests/test_systemd.py +++ b/tests/test_systemd.py @@ -1,6 +1,6 @@ import os -from systemd import SystemdFile +from borg_qt.systemd import SystemdFile def test_write_unit(mock_home, monkeypatch):