azapyGUI 0.1.1__tar.gz → 1.0.0__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.
- {azapygui-0.1.1 → azapygui-1.0.0}/PKG-INFO +22 -10
- {azapygui-0.1.1 → azapygui-1.0.0}/README.md +6 -6
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/ViewTip.py +12 -12
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/ViewTip_Ubuntu.py +52 -52
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/ViewTip_fast.py +55 -55
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/config.py +1 -1
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI.egg-info/PKG-INFO +22 -10
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI.egg-info/requires.txt +1 -1
- {azapygui-0.1.1 → azapygui-1.0.0}/setup.py +3 -3
- {azapygui-0.1.1 → azapygui-1.0.0}/LICENSE +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/AppSettingsPage.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/AppSettingsPageMisc.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/AppSettingsWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/BacktestComputation.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/BacktestEntryWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/BacktestMenuPortfolioWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/CloneMenuPortfolioWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/CrossHairBCursor.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/DF_Window.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/DF_table.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/EditMenuPortfolioWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/EditPortfolioWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/EntryClonePortfolioWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/EntryNameWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/EntryRenamePortfolioWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/GetMktData.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/MenuApp.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/MktDataFrame.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/MktDataNode.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/ModelParamEditWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/NrShares_table.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/PortAnalyseWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/PortDataNode.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/PortfolioFrame.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/RebalanceMenuPortfolioWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/RemoveMenuPortfolioWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/SaveMenuPortfolioWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/Scrollable.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/SelectOneWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/SymbAnalyseWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/SymbExtractWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/SymbTableEntry.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/TimeSeriesViewWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/ViewTip_fade.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/WeightsWindow.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/__init__.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/azHelper.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/azapyApp.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/configHelps.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/configMSG.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/configModels.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/configPlot.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/configSettings.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/configTips.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/mktDataValidation.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/modelParametersValidation.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/serviceMasterUserConfig.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI/tkHelper.py +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI.egg-info/SOURCES.txt +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI.egg-info/dependency_links.txt +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/azapyGUI.egg-info/top_level.txt +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/pyproject.toml +0 -0
- {azapygui-0.1.1 → azapygui-1.0.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: azapyGUI
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: GUI for azapy library - Financial Portfolio Optimization Algorithms
|
|
5
5
|
Home-page: https://github.com/Mircea-MMXXI/azapyGUI.git
|
|
6
6
|
Author: Mircea Marinescu
|
|
@@ -12,14 +12,26 @@ Project-URL: Bug Tracker, https://github.com/Mircea-MMXXI/azapyGUI/issues
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
14
14
|
Classifier: Operating System :: OS Independent
|
|
15
|
-
Requires-Python: >=3.
|
|
15
|
+
Requires-Python: >=3.14.4
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: azapy>=1.2.
|
|
18
|
+
Requires-Dist: azapy>=1.2.6
|
|
19
19
|
Requires-Dist: numpy
|
|
20
20
|
Requires-Dist: pandas
|
|
21
21
|
Requires-Dist: matplotlib
|
|
22
22
|
Requires-Dist: xlsxwriter; platform_system == "Windows"
|
|
23
|
+
Dynamic: author
|
|
24
|
+
Dynamic: author-email
|
|
25
|
+
Dynamic: classifier
|
|
26
|
+
Dynamic: description
|
|
27
|
+
Dynamic: description-content-type
|
|
28
|
+
Dynamic: home-page
|
|
29
|
+
Dynamic: license
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
Dynamic: project-url
|
|
32
|
+
Dynamic: requires-dist
|
|
33
|
+
Dynamic: requires-python
|
|
34
|
+
Dynamic: summary
|
|
23
35
|
|
|
24
36
|
# azapyGUI project
|
|
25
37
|
|
|
@@ -117,10 +129,10 @@ and then run in a powershell: `python my_azapy.py`
|
|
|
117
129
|
|
|
118
130
|
### Required packages
|
|
119
131
|
|
|
120
|
-
* python 3.
|
|
121
|
-
* azapy 1.2.
|
|
122
|
-
* pandas
|
|
123
|
-
* numpy
|
|
124
|
-
* matplotlib 3.8
|
|
125
|
-
* xlsxwriter 3.
|
|
132
|
+
* python 3.14.4
|
|
133
|
+
* azapy 1.2.6
|
|
134
|
+
* pandas 3.0.2
|
|
135
|
+
* numpy 2.4.4
|
|
136
|
+
* matplotlib 3.10.8
|
|
137
|
+
* xlsxwriter 3.2.9 (for non-Linux installations)
|
|
126
138
|
|
|
@@ -94,10 +94,10 @@ and then run in a powershell: `python my_azapy.py`
|
|
|
94
94
|
|
|
95
95
|
### Required packages
|
|
96
96
|
|
|
97
|
-
* python 3.
|
|
98
|
-
* azapy 1.2.
|
|
99
|
-
* pandas
|
|
100
|
-
* numpy
|
|
101
|
-
* matplotlib 3.8
|
|
102
|
-
* xlsxwriter 3.
|
|
97
|
+
* python 3.14.4
|
|
98
|
+
* azapy 1.2.6
|
|
99
|
+
* pandas 3.0.2
|
|
100
|
+
* numpy 2.4.4
|
|
101
|
+
* matplotlib 3.10.8
|
|
102
|
+
* xlsxwriter 3.2.9 (for non-Linux installations)
|
|
103
103
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import platform
|
|
2
|
-
|
|
3
|
-
from azapyGUI.ViewTip_Ubuntu import ViewTip_Ubuntu
|
|
4
|
-
from azapyGUI.ViewTip_fade import ViewTip_fade
|
|
5
|
-
from azapyGUI.ViewTip_fast import ViewTip_fast
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def ViewTip(master, **kwargs):
|
|
9
|
-
if platform.system() == 'Windows':
|
|
10
|
-
return ViewTip_fade(master, **kwargs)
|
|
11
|
-
else:
|
|
12
|
-
return ViewTip_Ubuntu(master, **kwargs)
|
|
1
|
+
import platform
|
|
2
|
+
|
|
3
|
+
from azapyGUI.ViewTip_Ubuntu import ViewTip_Ubuntu
|
|
4
|
+
from azapyGUI.ViewTip_fade import ViewTip_fade
|
|
5
|
+
from azapyGUI.ViewTip_fast import ViewTip_fast
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def ViewTip(master, **kwargs):
|
|
9
|
+
if platform.system() == 'Windows':
|
|
10
|
+
return ViewTip_fade(master, **kwargs)
|
|
11
|
+
else:
|
|
12
|
+
return ViewTip_Ubuntu(master, **kwargs)
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import tkinter as tk
|
|
2
|
-
from tkinter import ttk
|
|
3
|
-
from typing import Union
|
|
4
|
-
|
|
5
|
-
Widget = Union[tk.Widget, ttk.Widget]
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class ViewTip_Ubuntu(tk.Toplevel):
|
|
9
|
-
def __init__(self, master, **kwargs):
|
|
10
|
-
tk.Toplevel.__init__(self, master)
|
|
11
|
-
|
|
12
|
-
self.attributes('-alpha', 0, '-topmost', True)
|
|
13
|
-
self.overrideredirect(True)
|
|
14
|
-
|
|
15
|
-
style = dict(bd=2, relief='raised', font='Ariel 10', bg='#D4D4D4',
|
|
16
|
-
anchor='w', justify='left')
|
|
17
|
-
self._label = tk.Label(self, **{**style, **kwargs})
|
|
18
|
-
self._label.grid(row=0, column=0, sticky='w')
|
|
19
|
-
|
|
20
|
-
self._view = True
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def bind(self, target:Widget, text:str, **kwargs):
|
|
24
|
-
target.bind('<Enter>', lambda e: self._goin(text, e), add="+")
|
|
25
|
-
target.bind('<Leave>', lambda e: self._goout(), add="+")
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def _goin(self, text:str=None, event:tk.Event=None):
|
|
29
|
-
if not self._view: return
|
|
30
|
-
self.deiconify()
|
|
31
|
-
|
|
32
|
-
self._label.configure(text=f'{text:^{len(text) + 2}}')
|
|
33
|
-
self.update()
|
|
34
|
-
|
|
35
|
-
offset_x = event.widget.winfo_width() + 2
|
|
36
|
-
offset_y = int((event.widget.winfo_height() - self._label.winfo_height()) / 2)
|
|
37
|
-
|
|
38
|
-
w = self._label.winfo_width()
|
|
39
|
-
h = self._label.winfo_height()
|
|
40
|
-
x = event.widget.winfo_rootx() + offset_x
|
|
41
|
-
y = event.widget.winfo_rooty() + offset_y
|
|
42
|
-
|
|
43
|
-
self.geometry(f'{w}x{h}+{x}+{y}')
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def _goout(self):
|
|
47
|
-
if not self._view: return
|
|
48
|
-
self.withdraw()
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
def turned(self, on:bool=True):
|
|
52
|
-
self._view = on
|
|
1
|
+
import tkinter as tk
|
|
2
|
+
from tkinter import ttk
|
|
3
|
+
from typing import Union
|
|
4
|
+
|
|
5
|
+
Widget = Union[tk.Widget, ttk.Widget]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ViewTip_Ubuntu(tk.Toplevel):
|
|
9
|
+
def __init__(self, master, **kwargs):
|
|
10
|
+
tk.Toplevel.__init__(self, master)
|
|
11
|
+
|
|
12
|
+
self.attributes('-alpha', 0, '-topmost', True)
|
|
13
|
+
self.overrideredirect(True)
|
|
14
|
+
|
|
15
|
+
style = dict(bd=2, relief='raised', font='Ariel 10', bg='#D4D4D4',
|
|
16
|
+
anchor='w', justify='left')
|
|
17
|
+
self._label = tk.Label(self, **{**style, **kwargs})
|
|
18
|
+
self._label.grid(row=0, column=0, sticky='w')
|
|
19
|
+
|
|
20
|
+
self._view = True
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def bind(self, target:Widget, text:str, **kwargs):
|
|
24
|
+
target.bind('<Enter>', lambda e: self._goin(text, e), add="+")
|
|
25
|
+
target.bind('<Leave>', lambda e: self._goout(), add="+")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _goin(self, text:str=None, event:tk.Event=None):
|
|
29
|
+
if not self._view: return
|
|
30
|
+
self.deiconify()
|
|
31
|
+
|
|
32
|
+
self._label.configure(text=f'{text:^{len(text) + 2}}')
|
|
33
|
+
self.update()
|
|
34
|
+
|
|
35
|
+
offset_x = event.widget.winfo_width() + 2
|
|
36
|
+
offset_y = int((event.widget.winfo_height() - self._label.winfo_height()) / 2)
|
|
37
|
+
|
|
38
|
+
w = self._label.winfo_width()
|
|
39
|
+
h = self._label.winfo_height()
|
|
40
|
+
x = event.widget.winfo_rootx() + offset_x
|
|
41
|
+
y = event.widget.winfo_rooty() + offset_y
|
|
42
|
+
|
|
43
|
+
self.geometry(f'{w}x{h}+{x}+{y}')
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _goout(self):
|
|
47
|
+
if not self._view: return
|
|
48
|
+
self.withdraw()
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def turned(self, on:bool=True):
|
|
52
|
+
self._view = on
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import tkinter as tk
|
|
2
|
-
from tkinter import ttk
|
|
3
|
-
from typing import Union
|
|
4
|
-
|
|
5
|
-
Widget = Union[tk.Widget, ttk.Widget]
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class ViewTip_fast(tk.Toplevel):
|
|
9
|
-
def __init__(self, master, fade_inc=0.07, fade_ms=20, **kwargs):
|
|
10
|
-
tk.Toplevel.__init__(self, master)
|
|
11
|
-
self._fade_inc = fade_inc
|
|
12
|
-
self._fade_ms = fade_ms
|
|
13
|
-
|
|
14
|
-
self.attributes('-alpha', 0, '-topmost', True)
|
|
15
|
-
self.overrideredirect(True)
|
|
16
|
-
|
|
17
|
-
style = dict(bd=2, relief='raised', font='Ariel 10', bg='#D4D4D4',
|
|
18
|
-
anchor='w', justify='left')
|
|
19
|
-
self._label = tk.Label(self, **{**style, **kwargs})
|
|
20
|
-
self._label.grid(row=0, column=0, sticky='w')
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def bind(self, target:Widget, text:str, **kwargs):
|
|
24
|
-
target.bind('<Enter>', lambda e: self._goin(text, e), add="+")
|
|
25
|
-
target.bind('<Leave>', lambda e: self._goout(), add="+")
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def _goin(self, text:str=None, event:tk.Event=None):
|
|
29
|
-
if text is None: return
|
|
30
|
-
|
|
31
|
-
self._label.configure(text=f'{text:^{len(text) + 2}}')
|
|
32
|
-
self.update()
|
|
33
|
-
|
|
34
|
-
offset_x = event.widget.winfo_width() + 2
|
|
35
|
-
offset_y = int((event.widget.winfo_height() - self._label.winfo_height()) / 2)
|
|
36
|
-
|
|
37
|
-
w = self._label.winfo_width()
|
|
38
|
-
h = self._label.winfo_height()
|
|
39
|
-
x = event.widget.winfo_rootx() + offset_x
|
|
40
|
-
y = event.widget.winfo_rooty() + offset_y
|
|
41
|
-
|
|
42
|
-
self.geometry(f'{w}x{h}+{x}+{y}')
|
|
43
|
-
|
|
44
|
-
self.attributes('-alpha', 1)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def _goout(self):
|
|
48
|
-
self.attributes('-alpha', 0)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
def turned(self, on=True):
|
|
52
|
-
if on:
|
|
53
|
-
self.deiconify()
|
|
54
|
-
else:
|
|
55
|
-
self.withdraw()
|
|
1
|
+
import tkinter as tk
|
|
2
|
+
from tkinter import ttk
|
|
3
|
+
from typing import Union
|
|
4
|
+
|
|
5
|
+
Widget = Union[tk.Widget, ttk.Widget]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ViewTip_fast(tk.Toplevel):
|
|
9
|
+
def __init__(self, master, fade_inc=0.07, fade_ms=20, **kwargs):
|
|
10
|
+
tk.Toplevel.__init__(self, master)
|
|
11
|
+
self._fade_inc = fade_inc
|
|
12
|
+
self._fade_ms = fade_ms
|
|
13
|
+
|
|
14
|
+
self.attributes('-alpha', 0, '-topmost', True)
|
|
15
|
+
self.overrideredirect(True)
|
|
16
|
+
|
|
17
|
+
style = dict(bd=2, relief='raised', font='Ariel 10', bg='#D4D4D4',
|
|
18
|
+
anchor='w', justify='left')
|
|
19
|
+
self._label = tk.Label(self, **{**style, **kwargs})
|
|
20
|
+
self._label.grid(row=0, column=0, sticky='w')
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def bind(self, target:Widget, text:str, **kwargs):
|
|
24
|
+
target.bind('<Enter>', lambda e: self._goin(text, e), add="+")
|
|
25
|
+
target.bind('<Leave>', lambda e: self._goout(), add="+")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _goin(self, text:str=None, event:tk.Event=None):
|
|
29
|
+
if text is None: return
|
|
30
|
+
|
|
31
|
+
self._label.configure(text=f'{text:^{len(text) + 2}}')
|
|
32
|
+
self.update()
|
|
33
|
+
|
|
34
|
+
offset_x = event.widget.winfo_width() + 2
|
|
35
|
+
offset_y = int((event.widget.winfo_height() - self._label.winfo_height()) / 2)
|
|
36
|
+
|
|
37
|
+
w = self._label.winfo_width()
|
|
38
|
+
h = self._label.winfo_height()
|
|
39
|
+
x = event.widget.winfo_rootx() + offset_x
|
|
40
|
+
y = event.widget.winfo_rooty() + offset_y
|
|
41
|
+
|
|
42
|
+
self.geometry(f'{w}x{h}+{x}+{y}')
|
|
43
|
+
|
|
44
|
+
self.attributes('-alpha', 1)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _goout(self):
|
|
48
|
+
self.attributes('-alpha', 0)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def turned(self, on=True):
|
|
52
|
+
if on:
|
|
53
|
+
self.deiconify()
|
|
54
|
+
else:
|
|
55
|
+
self.withdraw()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: azapyGUI
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: GUI for azapy library - Financial Portfolio Optimization Algorithms
|
|
5
5
|
Home-page: https://github.com/Mircea-MMXXI/azapyGUI.git
|
|
6
6
|
Author: Mircea Marinescu
|
|
@@ -12,14 +12,26 @@ Project-URL: Bug Tracker, https://github.com/Mircea-MMXXI/azapyGUI/issues
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
14
14
|
Classifier: Operating System :: OS Independent
|
|
15
|
-
Requires-Python: >=3.
|
|
15
|
+
Requires-Python: >=3.14.4
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: azapy>=1.2.
|
|
18
|
+
Requires-Dist: azapy>=1.2.6
|
|
19
19
|
Requires-Dist: numpy
|
|
20
20
|
Requires-Dist: pandas
|
|
21
21
|
Requires-Dist: matplotlib
|
|
22
22
|
Requires-Dist: xlsxwriter; platform_system == "Windows"
|
|
23
|
+
Dynamic: author
|
|
24
|
+
Dynamic: author-email
|
|
25
|
+
Dynamic: classifier
|
|
26
|
+
Dynamic: description
|
|
27
|
+
Dynamic: description-content-type
|
|
28
|
+
Dynamic: home-page
|
|
29
|
+
Dynamic: license
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
Dynamic: project-url
|
|
32
|
+
Dynamic: requires-dist
|
|
33
|
+
Dynamic: requires-python
|
|
34
|
+
Dynamic: summary
|
|
23
35
|
|
|
24
36
|
# azapyGUI project
|
|
25
37
|
|
|
@@ -117,10 +129,10 @@ and then run in a powershell: `python my_azapy.py`
|
|
|
117
129
|
|
|
118
130
|
### Required packages
|
|
119
131
|
|
|
120
|
-
* python 3.
|
|
121
|
-
* azapy 1.2.
|
|
122
|
-
* pandas
|
|
123
|
-
* numpy
|
|
124
|
-
* matplotlib 3.8
|
|
125
|
-
* xlsxwriter 3.
|
|
132
|
+
* python 3.14.4
|
|
133
|
+
* azapy 1.2.6
|
|
134
|
+
* pandas 3.0.2
|
|
135
|
+
* numpy 2.4.4
|
|
136
|
+
* matplotlib 3.10.8
|
|
137
|
+
* xlsxwriter 3.2.9 (for non-Linux installations)
|
|
126
138
|
|
|
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as readme:
|
|
|
5
5
|
|
|
6
6
|
setuptools.setup(
|
|
7
7
|
name="azapyGUI",
|
|
8
|
-
version="0.
|
|
8
|
+
version="1.0.0",
|
|
9
9
|
author="Mircea Marinescu",
|
|
10
10
|
author_email="mircea.marinescu@outlook.com",
|
|
11
11
|
description="GUI for azapy library - Financial Portfolio Optimization Algorithms",
|
|
@@ -25,9 +25,9 @@ setuptools.setup(
|
|
|
25
25
|
],
|
|
26
26
|
package_dir={"": "."},
|
|
27
27
|
packages=setuptools.find_packages(),
|
|
28
|
-
python_requires=">=3.
|
|
28
|
+
python_requires=">=3.14.4",
|
|
29
29
|
install_requires=[
|
|
30
|
-
'azapy>=1.2.
|
|
30
|
+
'azapy>=1.2.6',
|
|
31
31
|
'numpy',
|
|
32
32
|
'pandas',
|
|
33
33
|
'matplotlib',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|