p3lib 1.1.93__tar.gz → 1.1.95__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 (31) hide show
  1. {p3lib-1.1.93 → p3lib-1.1.95}/PKG-INFO +1 -1
  2. {p3lib-1.1.93 → p3lib-1.1.95}/setup.cfg +1 -1
  3. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/boot_manager.py +46 -22
  4. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/helper.py +0 -1
  5. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib.egg-info/PKG-INFO +1 -1
  6. {p3lib-1.1.93 → p3lib-1.1.95}/LICENSE +0 -0
  7. {p3lib-1.1.93 → p3lib-1.1.95}/README.md +0 -0
  8. {p3lib-1.1.93 → p3lib-1.1.95}/pyproject.toml +0 -0
  9. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/__init__.py +0 -0
  10. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/ate.py +0 -0
  11. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/bokeh_auth.py +0 -0
  12. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/bokeh_gui.py +0 -0
  13. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/conduit.py +0 -0
  14. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/database_if.py +0 -0
  15. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/json_networking.py +0 -0
  16. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/mqtt_rpc.py +0 -0
  17. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/netif.py +0 -0
  18. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/netplotly.py +0 -0
  19. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/ngt.py +0 -0
  20. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/pconfig.py +0 -0
  21. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/ssh.py +0 -0
  22. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/table_plot.py +0 -0
  23. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib/uio.py +0 -0
  24. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib.egg-info/SOURCES.txt +0 -0
  25. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib.egg-info/dependency_links.txt +0 -0
  26. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib.egg-info/requires.txt +0 -0
  27. {p3lib-1.1.93 → p3lib-1.1.95}/src/p3lib.egg-info/top_level.txt +0 -0
  28. {p3lib-1.1.93 → p3lib-1.1.95}/tests/test_conduit.py +0 -0
  29. {p3lib-1.1.93 → p3lib-1.1.95}/tests/test_json_networking.py +0 -0
  30. {p3lib-1.1.93 → p3lib-1.1.95}/tests/test_netif.py +0 -0
  31. {p3lib-1.1.93 → p3lib-1.1.95}/tests/test_ssh.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: p3lib
3
- Version: 1.1.93
3
+ Version: 1.1.95
4
4
  Summary: A group of python modules for networking, plotting data, config storage, automating boot scripts, ssh access and user input output.
5
5
  Home-page: https://github.com/pjaos/p3lib
6
6
  Author: Paul Austen
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = p3lib
3
- version = 1.1.93
3
+ version = 1.1.95
4
4
  author = Paul Austen
5
5
  author_email = pausten.os@gmail.com
6
6
  description = A group of python modules for networking, plotting data, config storage, automating boot scripts, ssh access and user input output.
@@ -27,13 +27,16 @@ class BootManager(object):
27
27
  parser.add_argument(BootManager.CHECK_CMD_OPT, help="Check the status of an auto started icons_gw instance.", action="store_true", default=False)
28
28
 
29
29
  @staticmethod
30
- def HandleOptions(uio, options, enable_syslog):
30
+ def HandleOptions(uio, options, enable_syslog, appName=None, restartSeconds=1):
31
31
  """@brief Handle one of the bot manager command line options if the
32
32
  user passed it on the cmd line.
33
33
  @param uio A UIO instance.
34
34
  @param options As returned from parser.parse_args() where parser
35
35
  is an instance of argparse.ArgumentParser.
36
36
  @param enable_syslog True to enable systemd syslog output.
37
+ @param appName The name of the app. This is used as the service name. If not set then
38
+ the name of the initially executed python file is used.
39
+ @param restartSeconds The number of seconds to sleep before restarting a service that has stopped (default=1).
37
40
  @return True if handled , False if not."""
38
41
  handled = False
39
42
  if options.check_auto_start:
@@ -41,7 +44,7 @@ class BootManager(object):
41
44
  handled = True
42
45
 
43
46
  elif options.enable_auto_start:
44
- BootManager.EnableAutoStart(uio, enable_syslog)
47
+ BootManager.EnableAutoStart(uio, enable_syslog, appName, restartSeconds)
45
48
  handled = True
46
49
 
47
50
  elif options.disable_auto_start:
@@ -51,9 +54,16 @@ class BootManager(object):
51
54
  return handled
52
55
 
53
56
  @staticmethod
54
- def EnableAutoStart(uio, enable_syslog):
55
- """@brief Enable this program to auto start when the computer on which it is installed starts."""
56
- bootManager = BootManager(uio=uio, ensureRootUser=True)
57
+ def EnableAutoStart(uio, enable_syslog, appName, restartSeconds):
58
+ """@brief Enable this program to auto start when the computer on which it is installed starts.
59
+ @param uio A UIO instance.
60
+ @param options As returned from parser.parse_args() where parser
61
+ is an instance of argparse.ArgumentParser.
62
+ @param enable_syslog True to enable systemd syslog output.
63
+ @param appName The name of the app. This is used as the service name. If not set then
64
+ the name of the initially executed python file is used.
65
+ @param restartSeconds The number of seconds to sleep before restarting a service that has stopped (default=1)."""
66
+ bootManager = BootManager(uio=uio, ensureRootUser=True, appName=appName, restartSeconds=restartSeconds)
57
67
  arsString = " ".join(sys.argv)
58
68
  bootManager.add(argString=arsString, enableSyslog=enable_syslog)
59
69
 
@@ -72,7 +82,7 @@ class BootManager(object):
72
82
  for line in lines:
73
83
  uio.info(line)
74
84
 
75
- def __init__(self, uio=None, allowRootUser=True, ensureRootUser=False):
85
+ def __init__(self, uio=None, allowRootUser=True, ensureRootUser=False, appName=None, restartSeconds=1):
76
86
  """@brief Constructor
77
87
  @param uio A UIO instance to display user output. If unset then no output
78
88
  is displayed to user.
@@ -81,13 +91,16 @@ class BootManager(object):
81
91
  ensuring programs are started up when a machine boots up
82
92
  the installed program should be installed for the root
83
93
  user on Linux systems.
84
- @param ensureRootUser If True the current user must be root user (Linux systems)."""
94
+ @param ensureRootUser If True the current user must be root user (Linux systems).
95
+ @param appName The name of the app. This is used as the service name. If not set then
96
+ the name of the initially executed python file is used.
97
+ @param restartSeconds The number of seconds to sleep before restarting a service that has stopped (default=1)."""
85
98
  self._uio = uio
86
99
  self._allowRootUser=allowRootUser
87
100
  self._osName = platform.system()
88
101
  self._platformBootManager = None
89
102
  if self._osName == BootManager.LINUX_OS_NAME:
90
- self._platformBootManager = LinuxBootManager(uio, self._allowRootUser, ensureRootUser)
103
+ self._platformBootManager = LinuxBootManager(uio, self._allowRootUser, ensureRootUser, appName, restartSeconds)
91
104
  else:
92
105
  raise Exception("{} is an unsupported OS.".format(self._osName) )
93
106
 
@@ -155,11 +168,14 @@ class LinuxBootManager(object):
155
168
  raise Exception(f"{serviceFolder} folder not found.")
156
169
  return serviceFolder
157
170
 
158
- def __init__(self, uio, allowRootUser, ensureRootUser):
171
+ def __init__(self, uio, allowRootUser, ensureRootUser, appName, restartSeconds):
159
172
  """@brief Constructor
160
173
  @param uio A UIO instance to display user output. If unset then no output is displayed to user.
161
174
  @param allowRootUser If True then allow root user to to auto start programs.
162
- @param ensureRootUser If True the current user must be root user."""
175
+ @param ensureRootUser If True the current user must be root user.
176
+ @param appName The name of the app. This is used as the systemd service name. If not set then
177
+ the name of the initially executed python file is used.
178
+ @param restartSeconds The number of seconds to sleep before restarting a service that has stopped."""
163
179
  self._uio = uio
164
180
  self._logFile = None
165
181
  self._allowRootUser=allowRootUser
@@ -180,7 +196,8 @@ class LinuxBootManager(object):
180
196
  self._cmdLinePrefix = self._systemCtlBin
181
197
  self._username = getpass.getuser()
182
198
  self._serviceFolder = LinuxBootManager.GetServiceFolder(self._rootMode)
183
- self._appName = None
199
+ self._appName = appName
200
+ self._restartSeconds = restartSeconds
184
201
 
185
202
  def _getInstallledStartupScript(self):
186
203
  """@brief Get the startup script full path. The startup script must be
@@ -252,18 +269,25 @@ class LinuxBootManager(object):
252
269
  if not os.path.isdir(exePath):
253
270
  self._fatalError("{} path not found".format(exePath))
254
271
 
255
- appName = os.path.basename(exeFile)
256
- if len(appName) == 0:
257
- self._fatalError("No app found to execute.")
272
+ # If the appName was set in the constructor then use this.
273
+ if self._appName:
274
+ appName = self._appName
258
275
 
259
- absApp = os.path.join(exePath, appName)
260
- if not os.path.isfile( absApp ):
261
- self._fatalError("{} file not found.".format(absApp) )
276
+ # Else we use the initially executed python file.
277
+ else:
262
278
 
263
- appName = appName.replace(".py", "")
264
- if self._rootMode:
265
- # We can only save to /var/log/ is we are root user.
266
- self._logFile = os.path.join(LinuxBootManager.LOG_PATH, appName)
279
+ appName = os.path.basename(exeFile)
280
+ if len(appName) == 0:
281
+ self._fatalError("No app found to execute.")
282
+
283
+ absApp = os.path.join(exePath, appName)
284
+ if not os.path.isfile( absApp ):
285
+ self._fatalError("{} file not found.".format(absApp) )
286
+
287
+ appName = appName.replace(".py", "")
288
+ if self._rootMode:
289
+ # We can only save to /var/log/ is we are root user.
290
+ self._logFile = os.path.join(LinuxBootManager.LOG_PATH, appName)
267
291
 
268
292
  return (appName, absApp)
269
293
 
@@ -302,7 +326,7 @@ class LinuxBootManager(object):
302
326
  lines.append("[Service]")
303
327
  lines.append("Type=simple")
304
328
  lines.append("Restart=always")
305
- lines.append("RestartSec=1")
329
+ lines.append(f"RestartSec={self._restartSeconds}")
306
330
  if enableSyslog:
307
331
  lines.append("StandardOutput=syslog")
308
332
  lines.append("StandardError=syslog")
@@ -9,7 +9,6 @@ import platform
9
9
  import json
10
10
  import traceback
11
11
  import socket
12
- import platform
13
12
 
14
13
  def initArgs(parser, lastCmdLineArg=None, checkHostArg=True):
15
14
  """This method is responsible for
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: p3lib
3
- Version: 1.1.93
3
+ Version: 1.1.95
4
4
  Summary: A group of python modules for networking, plotting data, config storage, automating boot scripts, ssh access and user input output.
5
5
  Home-page: https://github.com/pjaos/p3lib
6
6
  Author: Paul Austen
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