Skip to content

Commit f0d7339

Browse files
authored
fix #113, fix #114 and fix #117 (updated items in Help menu)
* fix #113 : added larray_editor version to report issue template * fix #114 : pytables version is detected properly by get_versions * fix #117 : report issue on either editor, larray or larray_eurostat project
1 parent 4386523 commit f0d7339

File tree

2 files changed

+59
-51
lines changed

2 files changed

+59
-51
lines changed

larray_editor/editor.py

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,13 @@ def setup_menu_bar(self):
289289
help_menu.addAction(create_action(self, _('Online Objects and Functions (API) &Reference'),
290290
triggered=self.open_api_documentation))
291291
help_menu.addSeparator()
292-
help_menu.addAction(create_action(self, _('Report &Issue...'), triggered=self.report_issue))
292+
report_issue_menu = help_menu.addMenu("Report &Issue...")
293+
report_issue_menu.addAction(create_action(self, _('Report &Editor Issue...'),
294+
triggered=self.report_issue('editor')))
295+
report_issue_menu.addAction(create_action(self, _('Report &LArray Issue...'),
296+
triggered=self.report_issue('larray')))
297+
report_issue_menu.addAction(create_action(self, _('Report &LArray Eurostat Issue...'),
298+
triggered=self.report_issue('larray_eurostat')))
293299
help_menu.addAction(create_action(self, _('&Users Discussion...'), triggered=self.open_users_group))
294300
help_menu.addAction(create_action(self, _('New Releases And &Announces Mailing List...'),
295301
triggered=self.open_announce_group))
@@ -680,14 +686,15 @@ def open_tutorial(self):
680686
def open_api_documentation(self):
681687
QDesktopServices.openUrl(QUrl(urls['doc_api']))
682688

683-
def report_issue(self):
684-
if PY2:
685-
from urllib import quote
686-
else:
687-
from urllib.parse import quote
689+
def report_issue(self, package):
690+
def _report_issue(*args, **kwargs):
691+
if PY2:
692+
from urllib import quote
693+
else:
694+
from urllib.parse import quote
688695

689-
versions = get_versions()
690-
issue_template = """\
696+
versions = get_versions(package)
697+
issue_template = """\
691698
## Description
692699
**What steps will reproduce the problem?**
693700
1.
@@ -702,21 +709,23 @@ def report_issue(self):
702709
703710
## Version and main components
704711
* Python {python} on {system} {bitness:d}bits
705-
* Qt {qt}, {qt_api} {qt_api_ver}
706712
"""
707-
for dep in dependencies:
708-
issue_template += "* {dep} {{{dep}}}\n".format(dep=dep)
709-
issue_template = issue_template.format(**versions)
710-
711-
url = QUrl(urls['new_issue'])
712-
if PYQT5:
713-
from qtpy.QtCore import QUrlQuery
714-
query = QUrlQuery()
715-
query.addQueryItem("body", quote(issue_template))
716-
url.setQuery(query)
717-
else:
718-
url.addEncodedQueryItem("body", quote(issue_template))
719-
QDesktopServices.openUrl(url)
713+
issue_template += "* {package} {{{package}}}\n".format(package=package)
714+
for dep in dependencies[package]:
715+
issue_template += "* {dep} {{{dep}}}\n".format(dep=dep)
716+
issue_template = issue_template.format(**versions)
717+
718+
url = QUrl(urls['new_issue_{}'.format(package)])
719+
if PYQT5:
720+
from qtpy.QtCore import QUrlQuery
721+
query = QUrlQuery()
722+
query.addQueryItem("body", quote(issue_template))
723+
url.setQuery(query)
724+
else:
725+
url.addEncodedQueryItem("body", quote(issue_template))
726+
QDesktopServices.openUrl(url)
727+
728+
return _report_issue
720729

721730
def open_users_group(self):
722731
QDesktopServices.openUrl(QUrl(urls['users_group']))
@@ -726,7 +735,7 @@ def open_announce_group(self):
726735

727736
def about(self):
728737
"""About Editor"""
729-
kwargs = get_versions()
738+
kwargs = get_versions('editor')
730739
kwargs.update(urls)
731740
message = """\
732741
<b>LArray Editor {editor}</b>: The Graphical User Interface for LArray.
@@ -735,9 +744,8 @@ def about(self):
735744
<p><b>Versions of underlying libraries</b>:
736745
<ul>
737746
<li>Python {python} on {system} {bitness:d}bits</li>
738-
<li>Qt {qt}, {qt_api} {qt_api_ver}</li>
739747
"""
740-
for dep in dependencies:
748+
for dep in dependencies['editor']:
741749
if kwargs[dep] != 'N/A':
742750
message += "<li>{dep} {{{dep}}}</li>\n".format(dep=dep)
743751
message += "</ul>"

larray_editor/utils.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,20 @@
1717
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
1818

1919

20-
dependencies = ['numpy', 'pandas', 'matplotlib', 'larray', 'larray_eurostat', 'pytables', 'xlwings', 'xlsxwriter',
21-
'xlrd', 'openpyxl']
20+
core_dependencies = ['numpy', 'pandas', 'matplotlib', 'pytables', 'xlwings', 'xlsxwriter', 'xlrd', 'openpyxl']
21+
editor_dependencies = ['larray', 'larray_eurostat', 'qt'] + core_dependencies
22+
eurostat_dependencies = ['larray']
23+
dependencies = {'editor': editor_dependencies, 'larray': core_dependencies, 'larray_eurostat': eurostat_dependencies}
24+
2225

2326
urls = {"fpb": "http://www.plan.be/index.php?lang=en",
2427
"GPL3": "https://www.gnu.org/licenses/gpl-3.0.html",
2528
"doc_stable": "http://larray.readthedocs.io/en/stable/",
2629
"doc_tutorial": "http://larray.readthedocs.io/en/stable/tutorial.html",
2730
"doc_api": "http://larray.readthedocs.io/en/stable/api.html",
28-
"new_issue": "https://github.com/liam2/larray/issues/new",
31+
"new_issue_editor": "https://github.com/larray-project/larray-editor/issues/new",
32+
"new_issue_larray": "https://github.com/liam2/larray/issues/new",
33+
"new_issue_larray_eurostat": "https://github.com/larray-project/larray_eurostat/issues/new",
2934
"announce_group": "https://groups.google.com/d/forum/larray-announce",
3035
"users_group": "https://groups.google.com/d/forum/larray-users"}
3136

@@ -37,44 +42,39 @@ def commonpath(paths):
3742
commonpath = os.path.commonpath
3843

3944

40-
def get_package_version(package_name):
41-
"""Return the version of a package if installed, N/A otherwise"""
45+
def get_module_version(module_name):
46+
"""Return the version of a module if installed, N/A otherwise"""
4247
try:
4348
from importlib import import_module
44-
package = import_module(package_name)
45-
if '__version__' in dir(package):
46-
return package.__version__
47-
elif '__VERSION__' in dir(package):
48-
return package.__VERSION__
49+
module = import_module(module_name)
50+
if 'qtpy' in module_name:
51+
from qtpy import API_NAME, PYQT_VERSION # API_NAME --> PyQt5 or PyQt4
52+
qt_version = module.__version__
53+
return '{}, {} {}'.format(qt_version, API_NAME, PYQT_VERSION)
54+
elif '__version__' in dir(module):
55+
return module.__version__
56+
elif '__VERSION__' in dir(module):
57+
return module.__VERSION__
4958
else:
5059
return 'N/A'
5160
except ImportError:
5261
return 'N/A'
5362

5463

55-
def get_versions():
56-
"""Get version information for components used by the Editor"""
64+
def get_versions(package):
65+
"""Get version information of dependencies of a package"""
5766
import platform
58-
from qtpy import API_NAME, PYQT_VERSION
59-
from qtpy.QtCore import __version__ as qtpy_version
60-
from larray_editor import __version__ as editor_version
67+
modules = {'editor': 'larray_editor', 'qt': 'qtpy.QtCore', 'pytables': 'tables'}
6168

6269
versions = {
63-
'editor': editor_version,
70+
'system': platform.system() if sys.platform != 'darwin' else 'Darwin',
6471
'python': platform.python_version(),
6572
'bitness': 64 if sys.maxsize > 2**32 else 32,
66-
'qt': qtpy_version,
67-
'qt_api': API_NAME, # PyQt5 or PyQt4
68-
'qt_api_ver': PYQT_VERSION,
6973
}
7074

71-
if not sys.platform == 'darwin': # To avoid a crash with our Mac app
72-
versions['system'] = platform.system() # Linux, Windows, ...
73-
else:
74-
versions['system'] = 'Darwin'
75-
76-
for dep in dependencies:
77-
versions[dep] = get_package_version(dep)
75+
versions[package] = get_module_version(modules.get(package, package))
76+
for dep in dependencies[package]:
77+
versions[dep] = get_module_version(modules.get(dep, dep))
7878

7979
return versions
8080

0 commit comments

Comments
 (0)