forked from PlotPyStack/PythonQwt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.py
142 lines (119 loc) · 4.87 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# -*- coding: utf-8 -*-
#
# Licensed under the terms of the MIT License
# Copyright (c) 2015 Pierre Raybaut
# (see LICENSE file for more details)
"""
PythonQwt
=========
Qt plotting widgets for Python
"""
from __future__ import print_function
import os
import os.path as osp
import setuptools # analysis:ignore
from distutils.core import setup
LIBNAME = "PythonQwt"
PACKAGE_NAME = "qwt"
from qwt import __version__ as version
DESCRIPTION = "Qt plotting widgets for Python"
LONG_DESCRIPTION = """\
PythonQwt: Qt plotting widgets for Python
=========================================
.. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/qwt/tests/data/testlauncher.png
The ``PythonQwt`` package is a 2D-data plotting library using Qt graphical
user interfaces for the Python programming language. It is compatible with
``PyQt4``, ``PyQt5``, ``PyQt6`` and ``PySide6``.
The ``PythonQwt`` project was initiated to solve -at least temporarily- the
obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is
no longer maintained. The idea was to translate the original Qwt C++ code to
Python and then to optimize some parts of the code by writing new modules
based on NumPy and other libraries.
The ``PythonQwt`` package consists of a single Python package named `qwt`
which is a pure Python implementation of Qwt C++ library with some
limitations: efforts were concentrated on basic plotting features, leaving
higher level features to the `guiqwt` library.
See `README`_ and documentation (`online`_ or `PDF`_) for more details on the library and `changelog`_ for recent history of changes.
The following example is a good starting point to see how to set up a simple plot widget::
from qtpy import QtWidgets as QW
import qwt
import numpy as np
app = QW.QApplication([])
x = np.linspace(-10, 10, 500)
plot = qwt.QwtPlot("Trigonometric functions")
plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend)
qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True)
qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True)
plot.resize(600, 300)
plot.show()
app.exec_()
.. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/doc/images/QwtPlot_example.png
.. _README: https://github.com/PierreRaybaut/PythonQwt/blob/master/README.md
.. _online: https://pythonqwt.readthedocs.io/en/latest/
.. _PDF: https://pythonqwt.readthedocs.io/_/downloads/en/latest/pdf/
.. _changelog: https://github.com/PierreRaybaut/PythonQwt/blob/master/CHANGELOG.md
"""
KEYWORDS = ""
CLASSIFIERS = []
if "beta" in version or "b" in version:
CLASSIFIERS += ["Development Status :: 4 - Beta"]
elif "alpha" in version or "a" in version:
CLASSIFIERS += ["Development Status :: 3 - Alpha"]
else:
CLASSIFIERS += ["Development Status :: 5 - Production/Stable"]
def get_package_data(name, extlist):
"""Return data files for package *name* with extensions in *extlist*"""
flist = []
# Workaround to replace os.path.relpath (not available until Python 2.6):
offset = len(name) + len(os.pathsep)
for dirpath, _dirnames, filenames in os.walk(name):
for fname in filenames:
if not fname.startswith(".") and osp.splitext(fname)[1] in extlist:
flist.append(osp.join(dirpath, fname)[offset:])
return flist
def get_subpackages(name):
"""Return subpackages of package *name*"""
splist = []
for dirpath, _dirnames, _filenames in os.walk(name):
if osp.isfile(osp.join(dirpath, "__init__.py")):
splist.append(".".join(dirpath.split(os.sep)))
return splist
setup(
name=LIBNAME,
version=version,
description=DESCRIPTION,
long_description=LONG_DESCRIPTION,
packages=get_subpackages(PACKAGE_NAME),
package_data={
PACKAGE_NAME: get_package_data(PACKAGE_NAME, (".png", ".svg", ".mo"))
},
install_requires=["NumPy>=1.5", "QtPy>=1.3"],
extras_require={
"Doc": ["Sphinx>=1.1"],
},
entry_points={
"gui_scripts": [
"PythonQwt = qwt.tests:run [Tests]",
],
"console_scripts": [
"PythonQwt-tests = qwt.tests:run [Tests]",
],
},
author="Pierre Raybaut",
author_email="[email protected]",
url="https://github.com/PierreRaybaut/%s" % LIBNAME,
platforms="Any",
classifiers=CLASSIFIERS
+ [
"License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)",
"License :: OSI Approved :: MIT License",
"Topic :: Scientific/Engineering :: Visualization",
"Topic :: Software Development :: Widget Sets",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: OS Independent",
"Operating System :: POSIX",
"Operating System :: Unix",
"Programming Language :: Python :: 3",
],
)