modulitiz-micro 2.27.1__py311-none-any.whl → 2.27.2__py311-none-any.whl

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 (102) hide show
  1. modulitiz_micro/ModuloBase64.py +61 -61
  2. modulitiz_micro/ModuloColorText.py +35 -35
  3. modulitiz_micro/ModuloDate.py +295 -295
  4. modulitiz_micro/ModuloFunzioni.py +58 -58
  5. modulitiz_micro/ModuloListe.py +150 -150
  6. modulitiz_micro/ModuloMeteo.py +72 -72
  7. modulitiz_micro/ModuloNumeri.py +130 -130
  8. modulitiz_micro/ModuloPyinstaller.py +29 -29
  9. modulitiz_micro/ModuloSeriale.py +61 -61
  10. modulitiz_micro/ModuloStatistiche.py +31 -31
  11. modulitiz_micro/ModuloStringhe.py +180 -180
  12. modulitiz_micro/ModuloTarghe.py +46 -46
  13. modulitiz_micro/android/ModuloAndroid.py +18 -18
  14. modulitiz_micro/android/ModuloAndroidAdb.py +48 -48
  15. modulitiz_micro/android/ModuloAndroidSim.py +130 -130
  16. modulitiz_micro/android/beans/SmsBean.py +12 -12
  17. modulitiz_micro/android/enums/AndroidSmsTypeEnum.py +17 -17
  18. modulitiz_micro/database/AbstractDatabaseService.py +13 -13
  19. modulitiz_micro/database/AbstractSql.py +49 -49
  20. modulitiz_micro/database/ModuloSqlOracle.py +19 -19
  21. modulitiz_micro/database/ModuloSqlServer.py +50 -50
  22. modulitiz_micro/database/eccezioni/EccezioneDbNoData.py +6 -6
  23. modulitiz_micro/database/mysql/AbstractBasicMysql.py +114 -114
  24. modulitiz_micro/database/mysql/ModuloMysql.py +151 -151
  25. modulitiz_micro/database/mysql/MysqlCommonConverter.py +47 -47
  26. modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py +6 -6
  27. modulitiz_micro/database/sqlite/AbstractBasicSQLite.py +114 -114
  28. modulitiz_micro/database/sqlite/ModuloSQLite.py +82 -82
  29. modulitiz_micro/eccezioni/EccezioneBase.py +7 -7
  30. modulitiz_micro/eccezioni/EccezioneCtrlC.py +7 -7
  31. modulitiz_micro/eccezioni/EccezioneRuntime.py +7 -7
  32. modulitiz_micro/eccezioni/EccezioneScheduler.py +7 -7
  33. modulitiz_micro/eccezioni/EccezioneSoNonSupportato.py +7 -7
  34. modulitiz_micro/eccezioni/http/EccezioneHttp.py +8 -8
  35. modulitiz_micro/eccezioni/http/EccezioneHttp404.py +7 -7
  36. modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py +7 -7
  37. modulitiz_micro/files/ModuloFiles.py +173 -173
  38. modulitiz_micro/files/ModuloLogging.py +69 -69
  39. modulitiz_micro/files/ModuloZip.py +42 -42
  40. modulitiz_micro/files/cache/CacheBean.py +5 -5
  41. modulitiz_micro/files/cache/CacheRam.py +29 -29
  42. modulitiz_micro/files/cache/DatabaseCache.py +91 -91
  43. modulitiz_micro/files/cache/decorators/cacheRam.py +26 -26
  44. modulitiz_micro/files/git/ModuloGit.py +15 -15
  45. modulitiz_micro/gestionedom/GestioneDom.py +44 -44
  46. modulitiz_micro/init/AbstractBasicInit.py +27 -27
  47. modulitiz_micro/init/AbstractInit.py +11 -11
  48. modulitiz_micro/keylogger/EccezioneKeyLogger.py +7 -7
  49. modulitiz_micro/keylogger/ModuloKeylogger.py +73 -73
  50. modulitiz_micro/multithreading/ModuloThread.py +26 -26
  51. modulitiz_micro/multithreading/ModuloThreadLogger.py +8 -8
  52. modulitiz_micro/multithreading/ModuloThreadWithCallbackError.py +25 -25
  53. modulitiz_micro/nlp/ModuloNlp.py +36 -36
  54. modulitiz_micro/nlp/ModuloNlpDateAndTime.py +59 -59
  55. modulitiz_micro/rete/ModuloNetworking.py +64 -64
  56. modulitiz_micro/rete/ModuloOpenVpn.py +15 -15
  57. modulitiz_micro/rete/email/EmailBean.py +5 -5
  58. modulitiz_micro/rete/email/ModuloEmail.py +90 -90
  59. modulitiz_micro/rete/http/ModuloHttp.py +114 -114
  60. modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py +91 -91
  61. modulitiz_micro/rete/http/ModuloHttpUtils.py +66 -66
  62. modulitiz_micro/rete/http/beans/HttpResponseBean.py +5 -5
  63. modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py +22 -22
  64. modulitiz_micro/rete/ntp/AbstractModuloNtp.py +73 -73
  65. modulitiz_micro/rete/ntp/ModuloNtpIt.py +8 -8
  66. modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py +35 -35
  67. modulitiz_micro/rete/socketserver/AbstractSocketServer.py +267 -267
  68. modulitiz_micro/rete/ssl/ModuloSsl.py +56 -56
  69. modulitiz_micro/sistema/EnvVarsEnum.py +9 -9
  70. modulitiz_micro/sistema/ModuloEnvVars.py +34 -34
  71. modulitiz_micro/sistema/ModuloSystem.py +298 -298
  72. modulitiz_micro/sistema/ModuloSystemPipe.py +67 -67
  73. modulitiz_micro/social/telegram/ModuloTelegram.py +52 -52
  74. modulitiz_micro/social/telegram/ModuloTelegramSimple.py +26 -26
  75. modulitiz_micro/util/beans/conf/AbstractBasicConfBean.py +11 -11
  76. modulitiz_micro/util/beans/conf/AbstractConfBean.py +16 -16
  77. modulitiz_micro/util/beans/fileconf/AbstractBasicFileConfBean.py +11 -11
  78. modulitiz_micro/util/beans/fileconf/AbstractFileConfBean.py +13 -13
  79. modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py +15 -15
  80. modulitiz_micro/util/beans/globalvar/AbstractGlobalVarBean.py +34 -34
  81. modulitiz_micro/util/decorators/noAwait.py +23 -23
  82. modulitiz_micro/util/pip/AbstractModuloPip.py +41 -41
  83. modulitiz_micro/util/pip/ModuloPip.py +49 -49
  84. modulitiz_micro/util/scheduler/AbstractScheduler.py +32 -32
  85. modulitiz_micro/util/spooler/AbstractSpooler.py +14 -14
  86. modulitiz_micro/util/spooler/Spooler.py +18 -18
  87. modulitiz_micro/util/spooler/beans/QueueBean.py +8 -8
  88. modulitiz_micro/util/spooler/decorators/spooler.py +49 -49
  89. modulitiz_micro/util/spooler/eccezioni/EccezioneSpooler.py +7 -7
  90. modulitiz_micro/util/spooler/eccezioni/EccezioneSpoolerFull.py +7 -7
  91. modulitiz_micro/util/unittesting/AbstractOverrideTestUtil.py +18 -18
  92. modulitiz_micro/util/unittesting/AbstractTestUtil.py +11 -11
  93. modulitiz_micro/util/unittesting/ModuloRunUnitTest.py +25 -25
  94. modulitiz_micro/util/wheel/ModuloBuildWheel.py +121 -121
  95. modulitiz_micro/util/wheel/ModuloToml.py +40 -40
  96. modulitiz_micro/util/wheel/ModuloWheel.py +12 -12
  97. {modulitiz_micro-2.27.1.dist-info → modulitiz_micro-2.27.2.dist-info}/LICENSE +21 -21
  98. {modulitiz_micro-2.27.1.dist-info → modulitiz_micro-2.27.2.dist-info}/METADATA +64 -63
  99. modulitiz_micro-2.27.2.dist-info/RECORD +101 -0
  100. modulitiz_micro-2.27.1.dist-info/RECORD +0 -101
  101. {modulitiz_micro-2.27.1.dist-info → modulitiz_micro-2.27.2.dist-info}/WHEEL +0 -0
  102. {modulitiz_micro-2.27.1.dist-info → modulitiz_micro-2.27.2.dist-info}/top_level.txt +0 -0
@@ -1,73 +1,73 @@
1
- import socket
2
- import struct
3
- from abc import ABC
4
-
5
- from modulitiz_micro.ModuloDate import ModuloDate
6
- from modulitiz_micro.eccezioni.http.EccezioneHttpGeneric import EccezioneHttpGeneric
7
- from modulitiz_micro.files.ModuloLogging import ModuloLogging
8
- from modulitiz_micro.rete.http.ModuloHttpConnectionSafe import ModuloHttpConnectionSafe
9
- from modulitiz_micro.rete.http.decorators.catchAndRaiseHttpExceptions import catchAndRaiseHttpExceptions
10
-
11
-
12
- class AbstractModuloNtp(ABC):
13
- REFRESH_CACHE_EVERY_SECS=4*3600*1000 # frequenza richiesta NTP, l'rpi sballa di 45 minuti ogni 24 ore
14
- OFFSET_MILLIS=1 # offset correzione errore
15
- TIMEOUT=10
16
-
17
- __PORTA=123 # numero della porta (UDP)
18
- __BUF=1024
19
- __TIME1970=2208988800 # reference time, secondi da 1900-01-01 00:00:00 a 1970-01-01 00:00:00 = 70 anni
20
- __MSG=('\x1b' + 47 * '\0').encode()
21
-
22
-
23
- def __init__(self,host:str,logger:ModuloLogging):
24
- self.logger=logger
25
- self.connectionSafe = ModuloHttpConnectionSafe(logger)
26
- self.host=host
27
- self.lastNtpResponse=0
28
- self.lastNtpTimestampUtc=0
29
-
30
- def getTimestampUtcFromNtp(self,useCache:bool=True,retryIfError:bool=True)->int:
31
- if useCache is True and self.lastNtpResponse!=0:
32
- # controllo se e' passato poco tempo dall'ultima chiamata ntp
33
- diffMillisLastResponse=(ModuloDate.getMillis()-self.lastNtpResponse)
34
- if diffMillisLastResponse<self.REFRESH_CACHE_EVERY_SECS:
35
- # calcolo l'ora attuale usando il cronometro interno
36
- return self.lastNtpTimestampUtc+diffMillisLastResponse+self.OFFSET_MILLIS
37
- # invio la richiesta e in caso di errore...
38
- if not retryIfError:
39
- #... uso il cronometro interno
40
- try:
41
- timestampUtc=self.__ntpSendPacket()
42
- except EccezioneHttpGeneric:
43
- timestampUtc=None
44
- else:
45
- #... riprovo
46
- timestampUtc=self.connectionSafe.run(1,3,self.__ntpSendPacket)
47
- if timestampUtc is None:
48
- diffMillisLastResponse=(ModuloDate.getMillis()-self.lastNtpResponse)
49
- return self.lastNtpTimestampUtc+diffMillisLastResponse+self.OFFSET_MILLIS
50
- timestampUtc=timestampUtc*1000
51
- # successo
52
- self.lastNtpResponse=ModuloDate.getMillis()
53
- self.lastNtpTimestampUtc=timestampUtc
54
- return self.lastNtpTimestampUtc
55
-
56
- def getDatetimeFromNtp(self,useCache:bool=True,retryIfError:bool=True):
57
- tsSec=self.getTimestampUtcFromNtp(useCache,retryIfError)//1000
58
- return ModuloDate.timestampUtcToDate(tsSec)
59
-
60
- @catchAndRaiseHttpExceptions
61
- def __ntpSendPacket(self)->int:
62
- # connect to server
63
- client=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
64
- client.settimeout(self.TIMEOUT)
65
- client.sendto(self.__MSG,(self.host,self.__PORTA))
66
- # ricevo i dati
67
- response=client.recvfrom(self.__BUF)[0]
68
- # chiudo la socket
69
- client.close()
70
- # estraggo il timestamp
71
- tsSec=struct.unpack("!12I",response)[10]
72
- tsSec-=self.__TIME1970
73
- return tsSec
1
+ import socket
2
+ import struct
3
+ from abc import ABC
4
+
5
+ from modulitiz_micro.ModuloDate import ModuloDate
6
+ from modulitiz_micro.eccezioni.http.EccezioneHttpGeneric import EccezioneHttpGeneric
7
+ from modulitiz_micro.files.ModuloLogging import ModuloLogging
8
+ from modulitiz_micro.rete.http.ModuloHttpConnectionSafe import ModuloHttpConnectionSafe
9
+ from modulitiz_micro.rete.http.decorators.catchAndRaiseHttpExceptions import catchAndRaiseHttpExceptions
10
+
11
+
12
+ class AbstractModuloNtp(ABC):
13
+ REFRESH_CACHE_EVERY_SECS=4*3600*1000 # frequenza richiesta NTP, l'rpi sballa di 45 minuti ogni 24 ore
14
+ OFFSET_MILLIS=1 # offset correzione errore
15
+ TIMEOUT=10
16
+
17
+ __PORTA=123 # numero della porta (UDP)
18
+ __BUF=1024
19
+ __TIME1970=2208988800 # reference time, secondi da 1900-01-01 00:00:00 a 1970-01-01 00:00:00 = 70 anni
20
+ __MSG=('\x1b' + 47 * '\0').encode()
21
+
22
+
23
+ def __init__(self,host:str,logger:ModuloLogging):
24
+ self.logger=logger
25
+ self.connectionSafe = ModuloHttpConnectionSafe(logger)
26
+ self.host=host
27
+ self.lastNtpResponse=0
28
+ self.lastNtpTimestampUtc=0
29
+
30
+ def getTimestampUtcFromNtp(self,useCache:bool=True,retryIfError:bool=True)->int:
31
+ if useCache is True and self.lastNtpResponse!=0:
32
+ # controllo se e' passato poco tempo dall'ultima chiamata ntp
33
+ diffMillisLastResponse=(ModuloDate.getMillis()-self.lastNtpResponse)
34
+ if diffMillisLastResponse<self.REFRESH_CACHE_EVERY_SECS:
35
+ # calcolo l'ora attuale usando il cronometro interno
36
+ return self.lastNtpTimestampUtc+diffMillisLastResponse+self.OFFSET_MILLIS
37
+ # invio la richiesta e in caso di errore...
38
+ if not retryIfError:
39
+ #... uso il cronometro interno
40
+ try:
41
+ timestampUtc=self.__ntpSendPacket()
42
+ except EccezioneHttpGeneric:
43
+ timestampUtc=None
44
+ else:
45
+ #... riprovo
46
+ timestampUtc=self.connectionSafe.run(1,3,self.__ntpSendPacket)
47
+ if timestampUtc is None:
48
+ diffMillisLastResponse=(ModuloDate.getMillis()-self.lastNtpResponse)
49
+ return self.lastNtpTimestampUtc+diffMillisLastResponse+self.OFFSET_MILLIS
50
+ timestampUtc=timestampUtc*1000
51
+ # successo
52
+ self.lastNtpResponse=ModuloDate.getMillis()
53
+ self.lastNtpTimestampUtc=timestampUtc
54
+ return self.lastNtpTimestampUtc
55
+
56
+ def getDatetimeFromNtp(self,useCache:bool=True,retryIfError:bool=True):
57
+ tsSec=self.getTimestampUtcFromNtp(useCache,retryIfError)//1000
58
+ return ModuloDate.timestampUtcToDate(tsSec)
59
+
60
+ @catchAndRaiseHttpExceptions
61
+ def __ntpSendPacket(self)->int:
62
+ # connect to server
63
+ client=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
64
+ client.settimeout(self.TIMEOUT)
65
+ client.sendto(self.__MSG,(self.host,self.__PORTA))
66
+ # ricevo i dati
67
+ response=client.recvfrom(self.__BUF)[0]
68
+ # chiudo la socket
69
+ client.close()
70
+ # estraggo il timestamp
71
+ tsSec=struct.unpack("!12I",response)[10]
72
+ tsSec-=self.__TIME1970
73
+ return tsSec
@@ -1,8 +1,8 @@
1
- from modulitiz_micro.rete.ntp.AbstractModuloNtp import AbstractModuloNtp
2
-
3
-
4
- class ModuloNtpIt(AbstractModuloNtp):
5
- HOST_IT="ntp1.inrim.it"
6
-
7
- def __init__(self,*args,**kwargs):
8
- super().__init__(self.HOST_IT,*args,**kwargs)
1
+ from modulitiz_micro.rete.ntp.AbstractModuloNtp import AbstractModuloNtp
2
+
3
+
4
+ class ModuloNtpIt(AbstractModuloNtp):
5
+ HOST_IT="ntp1.inrim.it"
6
+
7
+ def __init__(self,*args,**kwargs):
8
+ super().__init__(self.HOST_IT,*args,**kwargs)
@@ -1,35 +1,35 @@
1
- from abc import abstractmethod
2
-
3
- from modulitiz_micro.ModuloStringhe import ModuloStringhe
4
- from modulitiz_micro.eccezioni.http.EccezioneHttp import EccezioneHttp
5
- from modulitiz_micro.rete.http.ModuloHttp import ModuloHttp
6
- from modulitiz_micro.rete.socketserver.AbstractSocketServer import AbstractSocketServer
7
-
8
-
9
- class AbstractBasicGetSocketServer(AbstractSocketServer):
10
-
11
- def __init__(self,*args,**kwargs):
12
- super().__init__(*args,**kwargs)
13
-
14
- @abstractmethod
15
- def processResponse(self,clientIp:str,path:str,params:dict)->str|None:
16
- """
17
- Cosa fare se la richiesta e' formalmente corretta.
18
- Deve ritornare un output per chi ha fatto la richiesta
19
- """
20
-
21
- def handleRequest(self,method:str,url:str,path:str,params:dict,httpType:str,clientIp:str,clientPort:int)->tuple:
22
- if method!='GET' or not ModuloStringhe.contains(httpType,'HTTP') or ModuloStringhe.isEmpty(url):
23
- return 500,None,None
24
- # controllo parametri
25
- httpCode=ModuloHttp.STATUS_OK
26
- responseBody=""
27
- try:
28
- responseBody=self.processResponse(clientIp,path,params)
29
- except Exception as ex:
30
- if not isinstance(ex, EccezioneHttp):
31
- self.callbackError(ex)
32
- httpCode=500
33
- else:
34
- httpCode=ex.httpCode
35
- return httpCode,None,responseBody
1
+ from abc import abstractmethod
2
+
3
+ from modulitiz_micro.ModuloStringhe import ModuloStringhe
4
+ from modulitiz_micro.eccezioni.http.EccezioneHttp import EccezioneHttp
5
+ from modulitiz_micro.rete.http.ModuloHttp import ModuloHttp
6
+ from modulitiz_micro.rete.socketserver.AbstractSocketServer import AbstractSocketServer
7
+
8
+
9
+ class AbstractBasicGetSocketServer(AbstractSocketServer):
10
+
11
+ def __init__(self,*args,**kwargs):
12
+ super().__init__(*args,**kwargs)
13
+
14
+ @abstractmethod
15
+ def processResponse(self,clientIp:str,path:str,params:dict)->str|None:
16
+ """
17
+ Cosa fare se la richiesta e' formalmente corretta.
18
+ Deve ritornare un output per chi ha fatto la richiesta
19
+ """
20
+
21
+ def handleRequest(self,method:str,url:str,path:str,params:dict,httpType:str,clientIp:str,clientPort:int)->tuple:
22
+ if method!='GET' or not ModuloStringhe.contains(httpType,'HTTP') or ModuloStringhe.isEmpty(url):
23
+ return 500,None,None
24
+ # controllo parametri
25
+ httpCode=ModuloHttp.STATUS_OK
26
+ responseBody=""
27
+ try:
28
+ responseBody=self.processResponse(clientIp,path,params)
29
+ except Exception as ex:
30
+ if not isinstance(ex, EccezioneHttp):
31
+ self.callbackError(ex)
32
+ httpCode=500
33
+ else:
34
+ httpCode=ex.httpCode
35
+ return httpCode,None,responseBody