PythonQwt 0.12.1__tar.gz → 0.12.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. {PythonQwt-0.12.1/PythonQwt.egg-info → pythonqwt-0.12.2}/PKG-INFO +5 -8
  2. {PythonQwt-0.12.1 → pythonqwt-0.12.2/PythonQwt.egg-info}/PKG-INFO +5 -8
  3. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/PythonQwt.egg-info/SOURCES.txt +1 -1
  4. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/PythonQwt.egg-info/requires.txt +2 -5
  5. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/README.md +2 -2
  6. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/conf.py +1 -1
  7. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/installation.rst +1 -1
  8. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/plot_example.py +5 -1
  9. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/symbol_path_example.py +11 -5
  10. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/pyproject.toml +26 -3
  11. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/__init__.py +19 -19
  12. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/_math.py +6 -6
  13. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/column_symbol.py +3 -5
  14. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/dyngrid_layout.py +1 -1
  15. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/legend.py +9 -8
  16. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/null_paintdevice.py +1 -1
  17. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/painter.py +0 -1
  18. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/painter_command.py +2 -1
  19. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/plot.py +1 -1
  20. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/plot_curve.py +2 -1
  21. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/plot_grid.py +5 -5
  22. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/plot_layout.py +8 -2
  23. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/plot_marker.py +7 -9
  24. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/plot_series.py +2 -3
  25. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/qthelpers.py +0 -1
  26. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/scale_div.py +2 -2
  27. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/scale_engine.py +7 -8
  28. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/scale_widget.py +11 -9
  29. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/__init__.py +8 -2
  30. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/comparative_benchmarks.py +1 -1
  31. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_cartesian.py +1 -2
  32. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_cpudemo.py +8 -8
  33. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_curvedemo1.py +3 -4
  34. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_curvedemo2.py +3 -5
  35. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_data.py +6 -6
  36. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_errorbar.py +11 -6
  37. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_eventfilter.py +1 -1
  38. pythonqwt-0.12.2/qwt/tests/test_highdpi.py +36 -0
  39. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_image.py +7 -8
  40. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_logcurve.py +1 -1
  41. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_mapdemo.py +4 -4
  42. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_multidemo.py +2 -3
  43. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_simple.py +2 -3
  44. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_stylesheet.py +9 -0
  45. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/toqimage.py +1 -2
  46. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/transform.py +2 -2
  47. PythonQwt-0.12.1/qwt/tests/conftest.py +0 -9
  48. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/LICENSE +0 -0
  49. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/MANIFEST.in +0 -0
  50. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/PythonQwt-tests.desktop +0 -0
  51. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/PythonQwt.egg-info/dependency_links.txt +0 -0
  52. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/PythonQwt.egg-info/entry_points.txt +0 -0
  53. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/PythonQwt.egg-info/top_level.txt +0 -0
  54. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/_static/PythonQwt_logo.png +0 -0
  55. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/_static/QwtPlot_example.png +0 -0
  56. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/_static/panorama.png +0 -0
  57. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/_static/symbol_path_example.png +0 -0
  58. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/bodedemo.rst +0 -0
  59. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/cartesian.rst +0 -0
  60. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/cpudemo.rst +0 -0
  61. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/curvebenchmark1.rst +0 -0
  62. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/curvebenchmark2.rst +0 -0
  63. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/curvedemo1.rst +0 -0
  64. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/curvedemo2.rst +0 -0
  65. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/data.rst +0 -0
  66. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/errorbar.rst +0 -0
  67. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/eventfilter.rst +0 -0
  68. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/image.rst +0 -0
  69. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/index.rst +0 -0
  70. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/logcurve.rst +0 -0
  71. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/mapdemo.rst +0 -0
  72. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/multidemo.rst +0 -0
  73. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/simple.rst +0 -0
  74. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/examples/vertical.rst +0 -0
  75. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/index.rst +0 -0
  76. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/overview.rst +0 -0
  77. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/graphic.rst +0 -0
  78. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/index.rst +0 -0
  79. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/interval.rst +0 -0
  80. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/plot.rst +0 -0
  81. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/plot_directpainter.rst +0 -0
  82. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/plot_layout.rst +0 -0
  83. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/plot_series.rst +0 -0
  84. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/scale.rst +0 -0
  85. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/symbol.rst +0 -0
  86. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/text.rst +0 -0
  87. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/toqimage.rst +0 -0
  88. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/reference/transform.rst +0 -0
  89. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/doc/requirements.txt +0 -0
  90. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/color_map.py +0 -0
  91. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/graphic.py +0 -0
  92. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/interval.py +0 -0
  93. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/plot_canvas.py +0 -0
  94. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/plot_directpainter.py +0 -0
  95. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/plot_renderer.py +0 -0
  96. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/scale_draw.py +0 -0
  97. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/scale_map.py +0 -0
  98. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/symbol.py +0 -0
  99. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/PythonQwt.svg +0 -0
  100. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/bodedemo.png +0 -0
  101. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/cartesian.png +0 -0
  102. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/cpudemo.png +0 -0
  103. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/curvebenchmark1.png +0 -0
  104. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/curvebenchmark2.png +0 -0
  105. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/curvedemo1.png +0 -0
  106. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/curvedemo2.png +0 -0
  107. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/data.png +0 -0
  108. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/errorbar.png +0 -0
  109. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/eventfilter.png +0 -0
  110. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/image.png +0 -0
  111. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/loadtest.png +0 -0
  112. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/logcurve.png +0 -0
  113. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/mapdemo.png +0 -0
  114. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/multidemo.png +0 -0
  115. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/simple.png +0 -0
  116. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/stylesheet.png +0 -0
  117. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/symbol.svg +0 -0
  118. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/symbols.png +0 -0
  119. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/testlauncher.png +0 -0
  120. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/data/vertical.png +0 -0
  121. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_backingstore.py +0 -0
  122. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_bodedemo.py +0 -0
  123. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_curvebenchmark1.py +0 -0
  124. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_curvebenchmark2.py +0 -0
  125. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_loadtest.py +0 -0
  126. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_symbols.py +0 -0
  127. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/test_vertical.py +0 -0
  128. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/tests/utils.py +0 -0
  129. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/qwt/text.py +0 -0
  130. {PythonQwt-0.12.1 → pythonqwt-0.12.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PythonQwt
3
- Version: 0.12.1
3
+ Version: 0.12.2
4
4
  Summary: Qt plotting widgets for Python
5
5
  Author-email: Pierre Raybaut <pierre.raybaut@gmail.com>
6
6
  License: PythonQwt License Agreement
@@ -686,11 +686,10 @@ Classifier: Programming Language :: Python :: 3.12
686
686
  Requires-Python: <4,>=3.8
687
687
  Description-Content-Type: text/markdown
688
688
  License-File: LICENSE
689
- Requires-Dist: NumPy>=1.21
689
+ Requires-Dist: NumPy<2,>=1.21
690
690
  Requires-Dist: QtPy>=1.9
691
691
  Provides-Extra: dev
692
- Requires-Dist: black; extra == "dev"
693
- Requires-Dist: isort; extra == "dev"
692
+ Requires-Dist: ruff; extra == "dev"
694
693
  Requires-Dist: pylint; extra == "dev"
695
694
  Requires-Dist: Coverage; extra == "dev"
696
695
  Provides-Extra: doc
@@ -699,8 +698,6 @@ Requires-Dist: sphinx>6; extra == "doc"
699
698
  Requires-Dist: python-docs-theme; extra == "doc"
700
699
  Provides-Extra: test
701
700
  Requires-Dist: pytest; extra == "test"
702
- Requires-Dist: pytest-cov; extra == "test"
703
- Requires-Dist: pytest-qt; extra == "test"
704
701
  Requires-Dist: pytest-xvfb; extra == "test"
705
702
 
706
703
  # PythonQwt: Qt plotting widgets for Python
@@ -714,7 +711,7 @@ Requires-Dist: pytest-xvfb; extra == "test"
714
711
 
715
712
  ℹ️ Created in 2014 by Pierre Raybaut and maintained by the [PlotPyStack](https://github.com/PlotPyStack) organization.
716
713
 
717
- ![PythonQwt Test Launcher](qwt/tests/data/testlauncher.png)
714
+ ![PythonQwt Test Launcher](https://raw.githubusercontent.com/PlotPyStack/PythonQwt/master/qwt/tests/data/testlauncher.png)
718
715
 
719
716
  The `PythonQwt` project was initiated to solve -at least temporarily- the
720
717
  obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is
@@ -810,7 +807,7 @@ The `qwt` package short-term roadmap is the following:
810
807
 
811
808
  ### Optional dependencies
812
809
 
813
- - coverage, pytest, pytest-qt, pytest-cov (for unit tests)
810
+ - coverage, pytest (for unit tests)
814
811
  - sphinx (for documentation generation)
815
812
 
816
813
  ## Installation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PythonQwt
3
- Version: 0.12.1
3
+ Version: 0.12.2
4
4
  Summary: Qt plotting widgets for Python
5
5
  Author-email: Pierre Raybaut <pierre.raybaut@gmail.com>
6
6
  License: PythonQwt License Agreement
@@ -686,11 +686,10 @@ Classifier: Programming Language :: Python :: 3.12
686
686
  Requires-Python: <4,>=3.8
687
687
  Description-Content-Type: text/markdown
688
688
  License-File: LICENSE
689
- Requires-Dist: NumPy>=1.21
689
+ Requires-Dist: NumPy<2,>=1.21
690
690
  Requires-Dist: QtPy>=1.9
691
691
  Provides-Extra: dev
692
- Requires-Dist: black; extra == "dev"
693
- Requires-Dist: isort; extra == "dev"
692
+ Requires-Dist: ruff; extra == "dev"
694
693
  Requires-Dist: pylint; extra == "dev"
695
694
  Requires-Dist: Coverage; extra == "dev"
696
695
  Provides-Extra: doc
@@ -699,8 +698,6 @@ Requires-Dist: sphinx>6; extra == "doc"
699
698
  Requires-Dist: python-docs-theme; extra == "doc"
700
699
  Provides-Extra: test
701
700
  Requires-Dist: pytest; extra == "test"
702
- Requires-Dist: pytest-cov; extra == "test"
703
- Requires-Dist: pytest-qt; extra == "test"
704
701
  Requires-Dist: pytest-xvfb; extra == "test"
705
702
 
706
703
  # PythonQwt: Qt plotting widgets for Python
@@ -714,7 +711,7 @@ Requires-Dist: pytest-xvfb; extra == "test"
714
711
 
715
712
  ℹ️ Created in 2014 by Pierre Raybaut and maintained by the [PlotPyStack](https://github.com/PlotPyStack) organization.
716
713
 
717
- ![PythonQwt Test Launcher](qwt/tests/data/testlauncher.png)
714
+ ![PythonQwt Test Launcher](https://raw.githubusercontent.com/PlotPyStack/PythonQwt/master/qwt/tests/data/testlauncher.png)
718
715
 
719
716
  The `PythonQwt` project was initiated to solve -at least temporarily- the
720
717
  obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is
@@ -810,7 +807,7 @@ The `qwt` package short-term roadmap is the following:
810
807
 
811
808
  ### Optional dependencies
812
809
 
813
- - coverage, pytest, pytest-qt, pytest-cov (for unit tests)
810
+ - coverage, pytest (for unit tests)
814
811
  - sphinx (for documentation generation)
815
812
 
816
813
  ## Installation
@@ -81,7 +81,6 @@ qwt/toqimage.py
81
81
  qwt/transform.py
82
82
  qwt/tests/__init__.py
83
83
  qwt/tests/comparative_benchmarks.py
84
- qwt/tests/conftest.py
85
84
  qwt/tests/test_backingstore.py
86
85
  qwt/tests/test_bodedemo.py
87
86
  qwt/tests/test_cartesian.py
@@ -93,6 +92,7 @@ qwt/tests/test_curvedemo2.py
93
92
  qwt/tests/test_data.py
94
93
  qwt/tests/test_errorbar.py
95
94
  qwt/tests/test_eventfilter.py
95
+ qwt/tests/test_highdpi.py
96
96
  qwt/tests/test_image.py
97
97
  qwt/tests/test_loadtest.py
98
98
  qwt/tests/test_logcurve.py
@@ -1,9 +1,8 @@
1
- NumPy>=1.21
1
+ NumPy<2,>=1.21
2
2
  QtPy>=1.9
3
3
 
4
4
  [dev]
5
- black
6
- isort
5
+ ruff
7
6
  pylint
8
7
  Coverage
9
8
 
@@ -14,6 +13,4 @@ python-docs-theme
14
13
 
15
14
  [test]
16
15
  pytest
17
- pytest-cov
18
- pytest-qt
19
16
  pytest-xvfb
@@ -9,7 +9,7 @@
9
9
 
10
10
  ℹ️ Created in 2014 by Pierre Raybaut and maintained by the [PlotPyStack](https://github.com/PlotPyStack) organization.
11
11
 
12
- ![PythonQwt Test Launcher](qwt/tests/data/testlauncher.png)
12
+ ![PythonQwt Test Launcher](https://raw.githubusercontent.com/PlotPyStack/PythonQwt/master/qwt/tests/data/testlauncher.png)
13
13
 
14
14
  The `PythonQwt` project was initiated to solve -at least temporarily- the
15
15
  obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is
@@ -105,7 +105,7 @@ The `qwt` package short-term roadmap is the following:
105
105
 
106
106
  ### Optional dependencies
107
107
 
108
- - coverage, pytest, pytest-qt, pytest-cov (for unit tests)
108
+ - coverage, pytest (for unit tests)
109
109
  - sphinx (for documentation generation)
110
110
 
111
111
  ## Installation
@@ -21,7 +21,7 @@ import sys
21
21
  # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
22
22
  extensions = ["sphinx.ext.autodoc"]
23
23
  try:
24
- import sphinx.ext.viewcode
24
+ import sphinx.ext.viewcode # noqa: F401
25
25
 
26
26
  extensions.append("sphinx.ext.viewcode")
27
27
  except ImportError:
@@ -10,7 +10,7 @@ Requirements:
10
10
  * QtPy 1.9 or higher
11
11
  * NumPy 1.21 or higher
12
12
  * Sphinx for documentation generation
13
- * pytest, pytest-cov, pytest-qt, coverage for unit testing
13
+ * pytest, coverage for unit testing
14
14
 
15
15
  Installation
16
16
  ------------
@@ -12,4 +12,8 @@ plot = qwt.QwtPlot("Trigonometric functions")
12
12
  plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend)
13
13
  qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True)
14
14
  qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True)
15
- qth.take_screenshot(plot, osp.join(osp.abspath(osp.dirname(__file__)), "_static", "QwtPlot_example.png"), size=(600, 300))
15
+ qth.take_screenshot(
16
+ plot,
17
+ osp.join(osp.abspath(osp.dirname(__file__)), "_static", "QwtPlot_example.png"),
18
+ size=(600, 300),
19
+ )
@@ -1,9 +1,11 @@
1
- from qtpy import QtWidgets as QW
2
- from qtpy import QtGui as QG
1
+ import os.path as osp
2
+
3
+ import numpy as np
3
4
  from qtpy import QtCore as QC
5
+ from qtpy import QtGui as QG
6
+ from qtpy import QtWidgets as QW
7
+
4
8
  import qwt
5
- import numpy as np
6
- import os.path as osp
7
9
  from qwt import qthelpers as qth
8
10
 
9
11
  app = QW.QApplication([])
@@ -46,4 +48,8 @@ plot = qwt.QwtPlot()
46
48
  curve.attach(plot)
47
49
  plot.replot()
48
50
 
49
- qth.take_screenshot(plot, osp.join(osp.abspath(osp.dirname(__file__)), "_static", "symbol_path_example.png"), size=(600, 300))
51
+ qth.take_screenshot(
52
+ plot,
53
+ osp.join(osp.abspath(osp.dirname(__file__)), "_static", "symbol_path_example.png"),
54
+ size=(600, 300),
55
+ )
@@ -31,7 +31,7 @@ classifiers = [
31
31
  "Programming Language :: Python :: 3.12",
32
32
  ]
33
33
  requires-python = ">=3.8, <4"
34
- dependencies = ["NumPy>=1.21", "QtPy>=1.9"]
34
+ dependencies = ["NumPy>=1.21,<2", "QtPy>=1.9"]
35
35
  dynamic = ["version"]
36
36
 
37
37
  [project.urls]
@@ -42,9 +42,9 @@ Documentation = "https://PythonQwt.readthedocs.io/en/latest/"
42
42
  PythonQwt-tests = "qwt.tests:run"
43
43
 
44
44
  [project.optional-dependencies]
45
- dev = ["black", "isort", "pylint", "Coverage"]
45
+ dev = ["ruff", "pylint", "Coverage"]
46
46
  doc = ["PyQt5", "sphinx>6", "python-docs-theme"]
47
- test = ["pytest", "pytest-cov", "pytest-qt", "pytest-xvfb"]
47
+ test = ["pytest", "pytest-xvfb"]
48
48
 
49
49
  [tool.setuptools.packages.find]
50
50
  include = ["qwt*"]
@@ -54,3 +54,26 @@ include = ["qwt*"]
54
54
 
55
55
  [tool.setuptools.dynamic]
56
56
  version = { attr = "qwt.__version__" }
57
+
58
+ [tool.ruff]
59
+ exclude = [".git", ".vscode", "build", "dist"]
60
+ line-length = 88 # Same as Black.
61
+ indent-width = 4 # Same as Black.
62
+ target-version = "py38" # Assume Python 3.8
63
+
64
+ [tool.ruff.lint]
65
+ # all rules can be found here: https://beta.ruff.rs/docs/rules/
66
+ select = ["E", "F", "W", "I"]
67
+ ignore = [
68
+ "E203", # space before : (needed for how black formats slicing)
69
+ ]
70
+
71
+ [tool.ruff.format]
72
+ quote-style = "double" # Like Black, use double quotes for strings.
73
+ indent-style = "space" # Like Black, indent with spaces, rather than tabs.
74
+ skip-magic-trailing-comma = false # Like Black, respect magic trailing commas.
75
+ line-ending = "auto" # Like Black, automatically detect the appropriate line ending.
76
+
77
+ [tool.ruff.lint.per-file-ignores]
78
+ "doc/*" = ["E402"]
79
+ "qwt/tests/*" = ["E402"]
@@ -27,36 +27,36 @@ External resources:
27
27
  .. _GitHub: https://github.com/PlotPyStack/PythonQwt
28
28
  """
29
29
 
30
- __version__ = "0.12.1"
31
- QWT_VERSION_STR = "6.1.5"
32
-
33
30
  import warnings
34
31
 
35
- from qwt.color_map import QwtLinearColorMap
32
+ from qwt.color_map import QwtLinearColorMap # noqa: F401
36
33
  from qwt.interval import QwtInterval
37
- from qwt.legend import QwtLegend, QwtLegendData, QwtLegendLabel
38
- from qwt.painter import QwtPainter
39
- from qwt.plot import QwtPlot
40
- from qwt.plot_canvas import QwtPlotCanvas
34
+ from qwt.legend import QwtLegend, QwtLegendData, QwtLegendLabel # noqa: F401
35
+ from qwt.painter import QwtPainter # noqa: F401
36
+ from qwt.plot import QwtPlot # noqa: F401
37
+ from qwt.plot_canvas import QwtPlotCanvas # noqa: F401
41
38
  from qwt.plot_curve import QwtPlotCurve as QPC # see deprecated section
42
- from qwt.plot_curve import QwtPlotItem
43
- from qwt.plot_directpainter import QwtPlotDirectPainter
39
+ from qwt.plot_curve import QwtPlotItem # noqa: F401
40
+ from qwt.plot_directpainter import QwtPlotDirectPainter # noqa: F401
44
41
  from qwt.plot_grid import QwtPlotGrid as QPG # see deprecated section
45
- from qwt.plot_marker import QwtPlotMarker
46
- from qwt.plot_renderer import QwtPlotRenderer
47
- from qwt.plot_series import (
42
+ from qwt.plot_marker import QwtPlotMarker # noqa: F401
43
+ from qwt.plot_renderer import QwtPlotRenderer # noqa: F401
44
+ from qwt.plot_series import ( # noqa: F401
48
45
  QwtPlotSeriesItem,
49
46
  QwtPointArrayData,
50
47
  QwtSeriesData,
51
48
  QwtSeriesStore,
52
49
  )
53
- from qwt.scale_div import QwtScaleDiv
54
- from qwt.scale_draw import QwtAbstractScaleDraw, QwtScaleDraw
55
- from qwt.scale_engine import QwtLinearScaleEngine, QwtLogScaleEngine
56
- from qwt.scale_map import QwtScaleMap
50
+ from qwt.scale_div import QwtScaleDiv # noqa: F401
51
+ from qwt.scale_draw import QwtAbstractScaleDraw, QwtScaleDraw # noqa: F401
52
+ from qwt.scale_engine import QwtLinearScaleEngine, QwtLogScaleEngine # noqa: F401
53
+ from qwt.scale_map import QwtScaleMap # noqa: F401
57
54
  from qwt.symbol import QwtSymbol as QSbl # see deprecated section
58
- from qwt.text import QwtText
59
- from qwt.toqimage import array_to_qimage as toQImage
55
+ from qwt.text import QwtText # noqa: F401
56
+ from qwt.toqimage import array_to_qimage as toQImage # noqa: F401
57
+
58
+ __version__ = "0.12.2"
59
+ QWT_VERSION_STR = "6.1.5"
60
60
 
61
61
 
62
62
  ## ============================================================================
@@ -5,10 +5,10 @@
5
5
  # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization
6
6
  # (see LICENSE file for more details)
7
7
 
8
- from qtpy.QtCore import qFuzzyCompare
9
-
10
8
  import math
11
9
 
10
+ from qtpy.QtCore import qFuzzyCompare
11
+
12
12
 
13
13
  def qwtFuzzyCompare(value1, value2, intervalSize):
14
14
  eps = abs(1.0e-6 * intervalSize)
@@ -38,16 +38,16 @@ def qwtSign(x):
38
38
 
39
39
 
40
40
  def qwtSqr(x):
41
- return x ** 2
41
+ return x**2
42
42
 
43
43
 
44
44
  def qwtFastAtan(x):
45
45
  if x < -1.0:
46
- return -0.5 * math.pi - x / (x ** 2 + 0.28)
46
+ return -0.5 * math.pi - x / (x**2 + 0.28)
47
47
  elif x > 1.0:
48
- return 0.5 * math.pi - x / (x ** 2 + 0.28)
48
+ return 0.5 * math.pi - x / (x**2 + 0.28)
49
49
  else:
50
- return x / (1.0 + x ** 2 * 0.28)
50
+ return x / (1.0 + x**2 * 0.28)
51
51
 
52
52
 
53
53
  def qwtFastAtan2(y, x):
@@ -5,10 +5,10 @@
5
5
  # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization
6
6
  # (see LICENSE file for more details)
7
7
 
8
- from qwt.interval import QwtInterval
8
+ from qtpy.QtCore import QLineF, QRectF, Qt
9
+ from qtpy.QtGui import QPalette, QPolygonF
9
10
 
10
- from qtpy.QtGui import QPolygonF, QPalette
11
- from qtpy.QtCore import QRectF, Qt, QLineF
11
+ from qwt.interval import QwtInterval
12
12
 
13
13
 
14
14
  def qwtDrawBox(p, rect, pal, lw):
@@ -80,7 +80,6 @@ class QwtColumnSymbol_PrivateData(object):
80
80
 
81
81
 
82
82
  class QwtColumnSymbol(object):
83
-
84
83
  # enum Style
85
84
  NoStyle = -1
86
85
  Box = 0
@@ -134,7 +133,6 @@ class QwtColumnSymbol(object):
134
133
 
135
134
 
136
135
  class QwtColumnRect(object):
137
-
138
136
  # enum Direction
139
137
  LeftToRight, RightToLeft, BottomToTop, TopToBottom = list(range(4))
140
138
 
@@ -15,8 +15,8 @@ The `dyngrid_layout` module provides the `QwtDynGridLayout` class.
15
15
  :members:
16
16
  """
17
17
 
18
+ from qtpy.QtCore import QRect, QSize, Qt
18
19
  from qtpy.QtWidgets import QLayout
19
- from qtpy.QtCore import Qt, QRect, QSize
20
20
 
21
21
 
22
22
  class QwtDynGridLayout_PrivateData(object):
@@ -21,22 +21,23 @@ QwtLegend
21
21
 
22
22
  import math
23
23
 
24
+ from qtpy.QtCore import QEvent, QPoint, QRect, QRectF, QSize, Qt, Signal
25
+
26
+ # qDrawWinButton,
27
+ from qtpy.QtGui import QPainter, QPalette, QPixmap
24
28
  from qtpy.QtWidgets import (
29
+ QApplication,
25
30
  QFrame,
26
31
  QScrollArea,
27
- QWidget,
28
- QVBoxLayout,
29
- QApplication,
30
- QStyleOption,
31
32
  QStyle,
32
- # qDrawWinButton,
33
+ QStyleOption,
34
+ QVBoxLayout,
35
+ QWidget,
33
36
  )
34
- from qtpy.QtGui import QPalette, QPixmap, QPainter
35
- from qtpy.QtCore import Signal, QEvent, QSize, Qt, QRect, QRectF, QPoint
36
37
 
37
- from qwt.text import QwtText, QwtTextLabel
38
38
  from qwt.dyngrid_layout import QwtDynGridLayout
39
39
  from qwt.painter import QwtPainter
40
+ from qwt.text import QwtText, QwtTextLabel
40
41
 
41
42
 
42
43
  class QwtLegendData(object):
@@ -15,7 +15,7 @@ QwtNullPaintDevice
15
15
 
16
16
  import os
17
17
 
18
- from qtpy.QtGui import QPaintEngine, QPainterPath, QPaintDevice
18
+ from qtpy.QtGui import QPaintDevice, QPaintEngine, QPainterPath
19
19
 
20
20
  QT_API = os.environ["QT_API"]
21
21
 
@@ -15,7 +15,6 @@ QwtPainterClass
15
15
 
16
16
  from qtpy.QtCore import QLineF, QPoint, QRect, Qt
17
17
  from qtpy.QtGui import (
18
- QBrush,
19
18
  QColor,
20
19
  QLinearGradient,
21
20
  QPaintEngine,
@@ -13,9 +13,10 @@ QwtPainterCommand
13
13
  :members:
14
14
  """
15
15
 
16
- from qtpy.QtGui import QPainterPath, QPaintEngine
17
16
  import copy
18
17
 
18
+ from qtpy.QtGui import QPaintEngine, QPainterPath
19
+
19
20
 
20
21
  class PixmapData(object):
21
22
  def __init__(self):
@@ -610,7 +610,7 @@ class QwtPlot(QFrame):
610
610
  :py:meth:`axisScaleDiv()`
611
611
  """
612
612
  if self.axisValid(axisId):
613
- return self.axisWidget(axisId).scaleDiv.interval()
613
+ return self.axisScaleDiv(axisId).interval()
614
614
  else:
615
615
  return QwtInterval()
616
616
 
@@ -36,9 +36,10 @@ from qwt.text import QwtText
36
36
  QT_API = os.environ["QT_API"]
37
37
 
38
38
  if QT_API == "pyside6":
39
- import shiboken6 as shiboken
40
39
  import ctypes
41
40
 
41
+ import shiboken6 as shiboken
42
+
42
43
  import numpy as np
43
44
 
44
45
 
@@ -13,13 +13,13 @@ QwtPlotGrid
13
13
  :members:
14
14
  """
15
15
 
16
- from qwt.scale_div import QwtScaleDiv
17
- from qwt.plot import QwtPlotItem
16
+ from qtpy.QtCore import QLineF, Qt
17
+ from qtpy.QtGui import QPen
18
+
18
19
  from qwt._math import qwtFuzzyGreaterOrEqual, qwtFuzzyLessOrEqual
20
+ from qwt.plot import QwtPlotItem
19
21
  from qwt.qthelpers import qcolor_from_str
20
-
21
- from qtpy.QtGui import QPen
22
- from qtpy.QtCore import Qt, QLineF
22
+ from qwt.scale_div import QwtScaleDiv
23
23
 
24
24
 
25
25
  class QwtPlotGrid_PrivateData(object):
@@ -136,7 +136,10 @@ class QwtPlotLayout_LayoutData(object):
136
136
  if layout is not None:
137
137
  mgn = layout.contentsMargins()
138
138
  self.canvas.contentsMargins = [
139
- mgn.left(), mgn.top(), mgn.right(), mgn.bottom()
139
+ mgn.left(),
140
+ mgn.top(),
141
+ mgn.right(),
142
+ mgn.bottom(),
140
143
  ]
141
144
 
142
145
 
@@ -575,7 +578,10 @@ class QwtPlotLayout(object):
575
578
  else:
576
579
  mgn = layout.contentsMargins()
577
580
  left, top, right, bottom = (
578
- mgn.left(), mgn.top(), mgn.right(), mgn.bottom()
581
+ mgn.left(),
582
+ mgn.top(),
583
+ mgn.right(),
584
+ mgn.bottom(),
579
585
  )
580
586
  for axis in QwtPlot.AXES:
581
587
  if plot.axisEnabled(axis):
@@ -13,14 +13,14 @@ QwtPlotMarker
13
13
  :members:
14
14
  """
15
15
 
16
- from qwt.plot import QwtPlot, QwtPlotItem
17
- from qwt.text import QwtText
16
+ from qtpy.QtCore import QLineF, QPointF, QRect, QRectF, QSizeF, Qt
17
+ from qtpy.QtGui import QPainter, QPen
18
+
18
19
  from qwt.graphic import QwtGraphic
19
- from qwt.symbol import QwtSymbol
20
+ from qwt.plot import QwtPlot, QwtPlotItem
20
21
  from qwt.qthelpers import qcolor_from_str
21
-
22
- from qtpy.QtGui import QPen, QPainter
23
- from qtpy.QtCore import Qt, QPointF, QRectF, QSizeF, QRect, QLineF
22
+ from qwt.symbol import QwtSymbol
23
+ from qwt.text import QwtText
24
24
 
25
25
 
26
26
  class QwtPlotMarker_PrivateData(object):
@@ -240,9 +240,7 @@ class QwtPlotMarker(QwtPlotItem):
240
240
  if self.__data.symbol and self.__data.symbol.style() != QwtSymbol.NoSymbol:
241
241
  sz = self.__data.symbol.size()
242
242
  width, height = int(sz.width()), int(sz.height())
243
- clipRect = QRectF(
244
- canvasRect.adjusted(-width, -height, width, height)
245
- )
243
+ clipRect = QRectF(canvasRect.adjusted(-width, -height, width, height))
246
244
  if clipRect.contains(pos):
247
245
  self.__data.symbol.drawSymbols(painter, [pos])
248
246
  self.drawLabel(painter, canvasRect, pos)
@@ -20,7 +20,7 @@ QwtSeriesData
20
20
 
21
21
  .. autoclass:: QwtSeriesData
22
22
  :members:
23
-
23
+
24
24
  QwtPointArrayData
25
25
  ~~~~~~~~~~~~~~~~~
26
26
 
@@ -35,12 +35,11 @@ QwtSeriesStore
35
35
  """
36
36
 
37
37
  import numpy as np
38
+ from qtpy.QtCore import QPointF, QRectF, Qt
38
39
 
39
40
  from qwt.plot import QwtPlotItem, QwtPlotItem_PrivateData
40
41
  from qwt.text import QwtText
41
42
 
42
- from qtpy.QtCore import Qt, QRectF, QPointF
43
-
44
43
 
45
44
  class QwtPlotSeriesItem_PrivateData(QwtPlotItem_PrivateData):
46
45
  def __init__(self):
@@ -7,7 +7,6 @@
7
7
  """Qt helpers"""
8
8
 
9
9
  import os
10
- import os.path as osp
11
10
 
12
11
  from qtpy import QtCore as QC
13
12
  from qtpy import QtGui as QG
@@ -13,10 +13,10 @@ QwtScaleDiv
13
13
  :members:
14
14
  """
15
15
 
16
- from qwt.interval import QwtInterval
17
-
18
16
  import copy
19
17
 
18
+ from qwt.interval import QwtInterval
19
+
20
20
 
21
21
  class QwtScaleDiv(object):
22
22
  """
@@ -25,17 +25,16 @@ QwtLogScaleEngine
25
25
  :members:
26
26
  """
27
27
 
28
- from qwt.interval import QwtInterval
29
- from qwt.scale_div import QwtScaleDiv
30
- from qwt.transform import QwtLogTransform
31
- from qwt._math import qwtFuzzyCompare
32
- from qwt.transform import QwtTransform
28
+ import math
29
+ import sys
33
30
 
31
+ import numpy as np
34
32
  from qtpy.QtCore import qFuzzyCompare
35
33
 
36
- import sys
37
- import math
38
- import numpy as np
34
+ from qwt._math import qwtFuzzyCompare
35
+ from qwt.interval import QwtInterval
36
+ from qwt.scale_div import QwtScaleDiv
37
+ from qwt.transform import QwtLogTransform, QwtTransform
39
38
 
40
39
  DBL_MAX = sys.float_info.max
41
40
  LOG_MIN = 1.0e-100
@@ -15,17 +15,16 @@ QwtScaleWidget
15
15
 
16
16
  import math
17
17
 
18
+ from qtpy.QtCore import QRectF, QSize, Qt, Signal
19
+ from qtpy.QtGui import QPainter, QPalette
20
+ from qtpy.QtWidgets import QSizePolicy, QStyle, QStyleOption, QWidget
21
+
22
+ from qwt.color_map import QwtColorMap, QwtLinearColorMap
23
+ from qwt.interval import QwtInterval
24
+ from qwt.painter import QwtPainter
18
25
  from qwt.scale_draw import QwtScaleDraw
19
26
  from qwt.scale_engine import QwtLinearScaleEngine
20
- from qwt.color_map import QwtLinearColorMap
21
27
  from qwt.text import QwtText
22
- from qwt.painter import QwtPainter
23
- from qwt.interval import QwtInterval
24
- from qwt.color_map import QwtColorMap
25
-
26
- from qtpy.QtGui import QPainter, QPalette
27
- from qtpy.QtWidgets import QWidget, QSizePolicy, QStyleOption, QStyle, QApplication
28
- from qtpy.QtCore import Qt, QRectF, QSize, Signal, QEvent
29
28
 
30
29
 
31
30
  class ColorBar(object):
@@ -639,7 +638,10 @@ class QwtScaleWidget(QWidget):
639
638
  else:
640
639
  mgn = self.layout().contentsMargins()
641
640
  left, top, right, bottom = (
642
- mgn.left(), mgn.top(), mgn.right(), mgn.bottom()
641
+ mgn.left(),
642
+ mgn.top(),
643
+ mgn.right(),
644
+ mgn.bottom(),
643
645
  )
644
646
  return size + QSize(left + right, top + bottom)
645
647