modulitiz-micro 2.40.0__py311-none-any.whl → 2.42.0__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 (107) hide show
  1. modulitiz_micro/ModuloMeteo.py +72 -72
  2. modulitiz_micro/ModuloSeriale.py +70 -70
  3. modulitiz_micro/ModuloTarghe.py +47 -46
  4. modulitiz_micro/database/AbstractDatabaseService.py +13 -13
  5. modulitiz_micro/database/AbstractSql.py +69 -69
  6. modulitiz_micro/database/ModuloSqlOracle.py +19 -19
  7. modulitiz_micro/database/ModuloSqlServer.py +43 -43
  8. modulitiz_micro/database/eccezioni/EccezioneDbNoData.py +6 -6
  9. modulitiz_micro/database/mysql/AbstractBasicMysql.py +114 -114
  10. modulitiz_micro/database/mysql/ModuloMysql.py +163 -163
  11. modulitiz_micro/database/mysql/MysqlCommonConverter.py +47 -47
  12. modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py +6 -6
  13. modulitiz_micro/database/sqlite/AbstractBasicSQLite.py +114 -114
  14. modulitiz_micro/database/sqlite/ModuloSQLite.py +82 -82
  15. modulitiz_micro/eccezioni/EccezioneCtrlC.py +7 -7
  16. modulitiz_micro/eccezioni/EccezioneScheduler.py +7 -7
  17. modulitiz_micro/eccezioni/http/EccezioneHttp.py +8 -8
  18. modulitiz_micro/eccezioni/http/EccezioneHttp404.py +7 -7
  19. modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py +7 -7
  20. modulitiz_micro/files/cache/DatabaseCache.py +91 -91
  21. modulitiz_micro/files/cache/decorators/cacheRam.py +26 -26
  22. modulitiz_micro/files/git/ModuloGit.py +28 -28
  23. modulitiz_micro/files/git/decorators/catchAndRaiseGitExceptions.py +19 -19
  24. modulitiz_micro/files/git/exceptions/EccezioneGit.py +7 -7
  25. modulitiz_micro/gestionedom/GestioneDom.py +44 -44
  26. modulitiz_micro/iot/ModuleIotDevice.py +4 -4
  27. modulitiz_micro/keylogger/EccezioneKeyLogger.py +7 -7
  28. modulitiz_micro/keylogger/ModuloKeylogger.py +73 -73
  29. modulitiz_micro/rete/ModuloNetworking.py +72 -72
  30. modulitiz_micro/rete/ModuloOpenVpn.py +15 -15
  31. modulitiz_micro/rete/email/EmailBean.py +5 -5
  32. modulitiz_micro/rete/email/ModuloEmail.py +90 -90
  33. modulitiz_micro/rete/http/ModuloHttp.py +119 -119
  34. modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py +91 -91
  35. modulitiz_micro/rete/http/ModuloHttpUtils.py +69 -69
  36. modulitiz_micro/rete/http/beans/HttpResponseBean.py +5 -5
  37. modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py +22 -22
  38. modulitiz_micro/rete/ntp/AbstractModuloNtp.py +73 -73
  39. modulitiz_micro/rete/ntp/ModuloNtpIt.py +8 -8
  40. modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py +35 -35
  41. modulitiz_micro/rete/socketserver/AbstractSocketServer.py +267 -267
  42. modulitiz_micro/rete/ssl/ModuloSsl.py +56 -56
  43. modulitiz_micro/sistema/ModuloEnvVars.py +34 -34
  44. modulitiz_micro/sistema/ModuloSystemPipe.py +67 -67
  45. modulitiz_micro/social/telegram/AbstractModuloTelegram.py +53 -53
  46. modulitiz_micro/social/telegram/ModuloTelegramSimple.py +26 -26
  47. modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py +15 -15
  48. modulitiz_micro/util/scheduler/{AbstractScheduler.py → ModuleScheduler.py} +26 -32
  49. {modulitiz_micro-2.40.0.dist-info → modulitiz_micro-2.42.0.dist-info}/METADATA +58 -65
  50. modulitiz_micro-2.42.0.dist-info/RECORD +56 -0
  51. {modulitiz_micro-2.40.0.dist-info → modulitiz_micro-2.42.0.dist-info}/WHEEL +1 -1
  52. {modulitiz_micro-2.40.0.dist-info → modulitiz_micro-2.42.0.dist-info/licenses}/LICENSE +21 -21
  53. modulitiz_micro/ModuleEnum.py +0 -8
  54. modulitiz_micro/ModuloBase64.py +0 -61
  55. modulitiz_micro/ModuloColorText.py +0 -35
  56. modulitiz_micro/ModuloDate.py +0 -295
  57. modulitiz_micro/ModuloFunzioni.py +0 -71
  58. modulitiz_micro/ModuloListe.py +0 -150
  59. modulitiz_micro/ModuloNumeri.py +0 -127
  60. modulitiz_micro/ModuloPyinstaller.py +0 -29
  61. modulitiz_micro/ModuloStatistiche.py +0 -31
  62. modulitiz_micro/ModuloStringhe.py +0 -180
  63. modulitiz_micro/android/ModuloAndroid.py +0 -18
  64. modulitiz_micro/android/ModuloAndroidAdb.py +0 -48
  65. modulitiz_micro/android/ModuloAndroidSim.py +0 -130
  66. modulitiz_micro/android/beans/SmsBean.py +0 -12
  67. modulitiz_micro/android/enums/AndroidSmsTypeEnum.py +0 -17
  68. modulitiz_micro/eccezioni/EccezioneBase.py +0 -7
  69. modulitiz_micro/eccezioni/EccezioneRuntime.py +0 -7
  70. modulitiz_micro/eccezioni/EccezioneSoNonSupportato.py +0 -7
  71. modulitiz_micro/files/ModuloFiles.py +0 -173
  72. modulitiz_micro/files/ModuloLogging.py +0 -69
  73. modulitiz_micro/files/ModuloZip.py +0 -42
  74. modulitiz_micro/files/cache/CacheBean.py +0 -5
  75. modulitiz_micro/files/cache/CacheRam.py +0 -29
  76. modulitiz_micro/init/AbstractBasicInit.py +0 -27
  77. modulitiz_micro/init/AbstractInit.py +0 -11
  78. modulitiz_micro/multithread/ModuloThread.py +0 -26
  79. modulitiz_micro/multithread/ModuloThreadLogger.py +0 -8
  80. modulitiz_micro/multithread/ModuloThreadWithCallbackError.py +0 -25
  81. modulitiz_micro/nlp/ModuloNlp.py +0 -36
  82. modulitiz_micro/nlp/ModuloNlpDateAndTime.py +0 -59
  83. modulitiz_micro/sistema/EnvVarsEnum.py +0 -9
  84. modulitiz_micro/sistema/ModuloSystem.py +0 -298
  85. modulitiz_micro/util/beans/conf/AbstractBasicConfBean.py +0 -11
  86. modulitiz_micro/util/beans/conf/AbstractConfBean.py +0 -16
  87. modulitiz_micro/util/beans/fileconf/AbstractBasicFileConfBean.py +0 -11
  88. modulitiz_micro/util/beans/fileconf/AbstractFileConfBean.py +0 -13
  89. modulitiz_micro/util/beans/globalvar/AbstractGlobalVarBean.py +0 -34
  90. modulitiz_micro/util/decorators/noAwait.py +0 -23
  91. modulitiz_micro/util/pip/AbstractModuloPip.py +0 -41
  92. modulitiz_micro/util/pip/ModuloPip.py +0 -49
  93. modulitiz_micro/util/spooler/AbstractSpooler.py +0 -14
  94. modulitiz_micro/util/spooler/Spooler.py +0 -18
  95. modulitiz_micro/util/spooler/beans/QueueBean.py +0 -8
  96. modulitiz_micro/util/spooler/decorators/spooler.py +0 -49
  97. modulitiz_micro/util/spooler/eccezioni/EccezioneSpooler.py +0 -7
  98. modulitiz_micro/util/spooler/eccezioni/EccezioneSpoolerFull.py +0 -7
  99. modulitiz_micro/util/unittesting/AbstractOverrideTestUtil.py +0 -31
  100. modulitiz_micro/util/unittesting/AbstractTestUtil.py +0 -11
  101. modulitiz_micro/util/unittesting/ModuloRunUnitTest.py +0 -25
  102. modulitiz_micro/util/wheel/ModuloBuildWheel.py +0 -118
  103. modulitiz_micro/util/wheel/ModuloCheckTestNamingConvention.py +0 -89
  104. modulitiz_micro/util/wheel/ModuloToml.py +0 -40
  105. modulitiz_micro/util/wheel/ModuloWheel.py +0 -12
  106. modulitiz_micro-2.40.0.dist-info/RECORD +0 -109
  107. {modulitiz_micro-2.40.0.dist-info → modulitiz_micro-2.42.0.dist-info}/top_level.txt +0 -0
@@ -1,34 +1,34 @@
1
- import os
2
-
3
- from modulitiz_micro.sistema.ModuloSystem import ModuloSystem
4
-
5
-
6
- class ModuloEnvVars(object):
7
-
8
- @classmethod
9
- def add(cls,nomeVar:str,valore:str,addFirst:bool):
10
- if not ModuloSystem.isWindows():
11
- separatore=":"
12
- else:
13
- separatore=";"
14
- nomeVar=nomeVar.upper()
15
- if not cls.exist(nomeVar):
16
- cls.setOrReplace(nomeVar,valore)
17
- return
18
- if addFirst:
19
- cls.setOrReplace(nomeVar,valore+separatore+os.environ[nomeVar])
20
- else:
21
- if not os.environ[nomeVar].endswith(separatore):
22
- os.environ[nomeVar]+=separatore
23
- os.environ[nomeVar]+=valore
24
- @staticmethod
25
- def setOrReplace(nomeVar:str,valore:str):
26
- os.environ[nomeVar]=valore
27
-
28
- @staticmethod
29
- def getOrNone(nomeVar:str)->str|None:
30
- return os.environ.get(nomeVar,None)
31
-
32
- @staticmethod
33
- def exist(nomeVar:str)->bool:
34
- return nomeVar in os.environ
1
+ import os
2
+
3
+ from modulitiz_nano.sistema.ModuloSystem import ModuloSystem
4
+
5
+
6
+ class ModuloEnvVars(object):
7
+
8
+ @classmethod
9
+ def add(cls,nomeVar:str,valore:str,addFirst:bool):
10
+ if not ModuloSystem.isWindows():
11
+ separatore=":"
12
+ else:
13
+ separatore=";"
14
+ nomeVar=nomeVar.upper()
15
+ if not cls.exist(nomeVar):
16
+ cls.setOrReplace(nomeVar,valore)
17
+ return
18
+ if addFirst:
19
+ cls.setOrReplace(nomeVar,valore+separatore+os.environ[nomeVar])
20
+ else:
21
+ if not os.environ[nomeVar].endswith(separatore):
22
+ os.environ[nomeVar]+=separatore
23
+ os.environ[nomeVar]+=valore
24
+ @staticmethod
25
+ def setOrReplace(nomeVar:str,valore:str):
26
+ os.environ[nomeVar]=valore
27
+
28
+ @staticmethod
29
+ def getOrNone(nomeVar:str)->str|None:
30
+ return os.environ.get(nomeVar,None)
31
+
32
+ @staticmethod
33
+ def exist(nomeVar:str)->bool:
34
+ return nomeVar in os.environ
@@ -1,67 +1,67 @@
1
- import multiprocessing
2
- import queue
3
- import subprocess
4
- import threading
5
- import time
6
-
7
- import psutil
8
-
9
- from modulitiz_micro.files.ModuloLogging import ModuloLogging
10
- from modulitiz_micro.multithread.ModuloThread import ModuloThread
11
- from modulitiz_micro.sistema.ModuloSystem import ModuloSystem
12
-
13
-
14
- class ModuloSystemPipe(object):
15
-
16
- @classmethod
17
- def read(cls,logger: ModuloLogging,pipe: subprocess.Popen,timeout:int|float) -> str|None:
18
- event=threading.Event()
19
- q=multiprocessing.Queue()
20
- ModuloThread.startDaemon(logger,cls.__read,(pipe,q,event))
21
-
22
- output=""
23
- pauseInterval=0.1
24
- contaTimeout=0
25
- continua=True
26
- while continua:
27
- outputBefore=output
28
- try:
29
- output+=q.get_nowait()
30
- except queue.Empty:
31
- pass
32
- continua=(output=="" or output!=outputBefore)
33
- if continua:
34
- if output=="":
35
- contaTimeout+=pauseInterval
36
- else:
37
- contaTimeout=0
38
- time.sleep(pauseInterval)
39
- else:
40
- if contaTimeout<=timeout:
41
- time.sleep(pauseInterval)
42
- continua=True
43
- contaTimeout+=pauseInterval
44
- event.set()
45
- return output.rstrip()
46
-
47
- @staticmethod
48
- def __read(pipe: subprocess.Popen,q: multiprocessing.Queue,event: threading.Event):
49
- chunk=pipe.stdout.readline()
50
- while chunk:
51
- q.put_nowait(chunk.decode())
52
- if event.is_set():
53
- return
54
- chunk=pipe.stdout.readline()
55
-
56
- @staticmethod
57
- def closeAndCheck(process:psutil.Process|subprocess.Popen,alias:str,timeout:int,callbackError,callbackSuccess):
58
- ModuloSystem.sendCtrlcProcess(process.pid)
59
- try:
60
- exitCode=process.wait(timeout)
61
- except subprocess.TimeoutExpired:
62
- callbackError(alias+" non terminato correttamente nel tempo utile")
63
- return
64
- if exitCode is None or exitCode==0:
65
- callbackSuccess(alias+" terminato con successo")
66
- return
67
- callbackError(alias+" non terminato correttamente, esito=%s"%(exitCode,))
1
+ import multiprocessing
2
+ import queue
3
+ import subprocess
4
+ import threading
5
+ import time
6
+
7
+ import psutil
8
+
9
+ from modulitiz_nano.files.ModuloLogging import ModuloLogging
10
+ from modulitiz_nano.multithread.ModuloThread import ModuloThread
11
+ from modulitiz_nano.sistema.ModuloSystem import ModuloSystem
12
+
13
+
14
+ class ModuloSystemPipe(object):
15
+
16
+ @classmethod
17
+ def read(cls,logger: ModuloLogging,pipe: subprocess.Popen,timeout:int|float) -> str|None:
18
+ event=threading.Event()
19
+ q=multiprocessing.Queue()
20
+ ModuloThread.startDaemon(logger,cls.__read,(pipe,q,event))
21
+
22
+ output=""
23
+ pauseInterval=0.1
24
+ contaTimeout=0
25
+ continua=True
26
+ while continua:
27
+ outputBefore=output
28
+ try:
29
+ output+=q.get_nowait()
30
+ except queue.Empty:
31
+ pass
32
+ continua=(output=="" or output!=outputBefore)
33
+ if continua:
34
+ if output=="":
35
+ contaTimeout+=pauseInterval
36
+ else:
37
+ contaTimeout=0
38
+ time.sleep(pauseInterval)
39
+ else:
40
+ if contaTimeout<=timeout:
41
+ time.sleep(pauseInterval)
42
+ continua=True
43
+ contaTimeout+=pauseInterval
44
+ event.set()
45
+ return output.rstrip()
46
+
47
+ @staticmethod
48
+ def __read(pipe: subprocess.Popen,q: multiprocessing.Queue,event: threading.Event):
49
+ chunk=pipe.stdout.readline()
50
+ while chunk:
51
+ q.put_nowait(chunk.decode())
52
+ if event.is_set():
53
+ return
54
+ chunk=pipe.stdout.readline()
55
+
56
+ @staticmethod
57
+ def closeAndCheck(process:psutil.Process|subprocess.Popen,alias:str,timeout:int,callbackError,callbackSuccess):
58
+ ModuloSystem.sendCtrlcProcess(process.pid)
59
+ try:
60
+ exitCode=process.wait(timeout)
61
+ except subprocess.TimeoutExpired:
62
+ callbackError(alias+" non terminato correttamente nel tempo utile")
63
+ return
64
+ if exitCode is None or exitCode==0:
65
+ callbackSuccess(alias+" terminato con successo")
66
+ return
67
+ callbackError(alias+" non terminato correttamente, esito=%s"%(exitCode,))
@@ -1,53 +1,53 @@
1
- from abc import ABC
2
- from abc import abstractmethod
3
-
4
- from telethon import TelegramClient
5
-
6
- from modulitiz_micro.ModuloStringhe import ModuloStringhe
7
- from modulitiz_micro.util.decorators.noAwait import noAwait
8
-
9
-
10
- class AbstractModuloTelegram(ABC):
11
- def __init__(self,apiId:int,apiHash:str,nomefileSessione:str,phoneNumWithCountryCode:str):
12
- self.apiId=apiId
13
- self.apiHash=apiHash
14
- self.nomefileSessione=nomefileSessione
15
- self.phoneNumWithCountryCode=phoneNumWithCountryCode
16
-
17
- self.client:TelegramClient|None = None
18
-
19
- @noAwait
20
- async def connect(self):
21
- self.client = TelegramClient(self.nomefileSessione, self.apiId, self.apiHash)
22
- await self.client.connect()
23
- # se il client non e' autorizzato richiedo la verifica
24
- if await self.client.is_user_authorized():
25
- return
26
- await self.client.send_code_request(self.phoneNumWithCountryCode)
27
- await self.client.sign_in(self.phoneNumWithCountryCode, self.getVerificationCodefromUser())
28
-
29
- def sendMessageWithConnectAndClose(self,username: str|None,msg: str):
30
- """
31
- Apre la connessione, invia il messaggio e chiude la connessione.
32
- :param username: il nome utente del destinatario a cui mandare il messaggio
33
- :param msg: il testo del messaggio da inviare
34
- """
35
- if ModuloStringhe.isEmpty(username):
36
- return
37
- self.connect()
38
- self.sendMessage(username,msg)
39
- self.close()
40
-
41
- @noAwait
42
- async def sendMessage(self,username:str,msg:str):
43
- await self.client.send_message(username, msg, parse_mode='html')
44
-
45
- def close(self):
46
- self.client.disconnect()
47
-
48
- @staticmethod
49
- @abstractmethod
50
- def getVerificationCodefromUser()->str:
51
- """
52
- Deve ritornare una stringa che corrisponde al codice di verifica inserito dall'utente.
53
- """
1
+ from abc import ABC
2
+ from abc import abstractmethod
3
+
4
+ from telethon import TelegramClient
5
+
6
+ from modulitiz_nano.ModuloStringhe import ModuloStringhe
7
+ from modulitiz_nano.util.decorators.noAwait import noAwait
8
+
9
+
10
+ class AbstractModuloTelegram(ABC):
11
+ def __init__(self,apiId:int,apiHash:str,nomefileSessione:str,phoneNumWithCountryCode:str):
12
+ self.apiId=apiId
13
+ self.apiHash=apiHash
14
+ self.nomefileSessione=nomefileSessione
15
+ self.phoneNumWithCountryCode=phoneNumWithCountryCode
16
+
17
+ self.client:TelegramClient|None = None
18
+
19
+ @noAwait
20
+ async def connect(self):
21
+ self.client = TelegramClient(self.nomefileSessione, self.apiId, self.apiHash)
22
+ await self.client.connect()
23
+ # se il client non e' autorizzato richiedo la verifica
24
+ if await self.client.is_user_authorized():
25
+ return
26
+ await self.client.send_code_request(self.phoneNumWithCountryCode)
27
+ await self.client.sign_in(self.phoneNumWithCountryCode, self.getVerificationCodefromUser())
28
+
29
+ def sendMessageWithConnectAndClose(self,username: str|None,msg: str):
30
+ """
31
+ Apre la connessione, invia il messaggio e chiude la connessione.
32
+ :param username: il nome utente del destinatario a cui mandare il messaggio
33
+ :param msg: il testo del messaggio da inviare
34
+ """
35
+ if ModuloStringhe.isEmpty(username):
36
+ return
37
+ self.connect()
38
+ self.sendMessage(username,msg)
39
+ self.close()
40
+
41
+ @noAwait
42
+ async def sendMessage(self,username:str,msg:str):
43
+ await self.client.send_message(username, msg, parse_mode='html')
44
+
45
+ def close(self):
46
+ self.client.disconnect()
47
+
48
+ @staticmethod
49
+ @abstractmethod
50
+ def getVerificationCodefromUser()->str:
51
+ """
52
+ Deve ritornare una stringa che corrisponde al codice di verifica inserito dall'utente.
53
+ """
@@ -1,26 +1,26 @@
1
- from modulitiz_micro.social.telegram.AbstractModuloTelegram import AbstractModuloTelegram
2
-
3
-
4
- class ModuloTelegramSimple(AbstractModuloTelegram):
5
- """
6
- Utility di gestione semplice per il sistema di messaggistica istantanea Telegram.
7
- """
8
-
9
- def __init__(self,usernameDestinatario:str|None,*args,**kwargs):
10
- super().__init__(*args,**kwargs)
11
- self.usernameDestinatario=usernameDestinatario
12
-
13
- @staticmethod
14
- def getVerificationCodefromUser()->str:
15
- """
16
- Specifica in che modo chiedere all'utente il codice di verifica,
17
- viene chiesto solo la prima volta che ci si collega.
18
- """
19
- return input('Inserisci il codice di verifica: ')
20
-
21
- def sendMessageDefaultDestinatario(self,msg:str):
22
- """
23
- Invia il messaggio al destinatario di default specificato nella creazione di quest'oggetto.
24
- :param msg: il testo del messaggio da inviare
25
- """
26
- super().sendMessageWithConnectAndClose(self.usernameDestinatario,msg)
1
+ from modulitiz_micro.social.telegram.AbstractModuloTelegram import AbstractModuloTelegram
2
+
3
+
4
+ class ModuloTelegramSimple(AbstractModuloTelegram):
5
+ """
6
+ Utility di gestione semplice per il sistema di messaggistica istantanea Telegram.
7
+ """
8
+
9
+ def __init__(self,usernameDestinatario:str|None,*args,**kwargs):
10
+ super().__init__(*args,**kwargs)
11
+ self.usernameDestinatario=usernameDestinatario
12
+
13
+ @staticmethod
14
+ def getVerificationCodefromUser()->str:
15
+ """
16
+ Specifica in che modo chiedere all'utente il codice di verifica,
17
+ viene chiesto solo la prima volta che ci si collega.
18
+ """
19
+ return input('Inserisci il codice di verifica: ')
20
+
21
+ def sendMessageDefaultDestinatario(self,msg:str):
22
+ """
23
+ Invia il messaggio al destinatario di default specificato nella creazione di quest'oggetto.
24
+ :param msg: il testo del messaggio da inviare
25
+ """
26
+ super().sendMessageWithConnectAndClose(self.usernameDestinatario,msg)
@@ -1,15 +1,15 @@
1
- from modulitiz_micro.rete.ntp.ModuloNtpIt import ModuloNtpIt
2
-
3
- from modulitiz_micro.util.beans.globalvar.AbstractGlobalVarBean import AbstractGlobalVarBean
4
-
5
-
6
- class AbstractBasicGlobalVarBean(AbstractGlobalVarBean):
7
- """
8
- Classe da usare come base per definire la struttura di una classe che raggrupperà gli oggetti che verranno usati nel programma
9
- """
10
-
11
- def __init__(self,useNtp:bool,*args,**kwargs):
12
- super().__init__(*args,**kwargs)
13
- if useNtp:
14
- self.moduloNtp=ModuloNtpIt(self.logger)
15
-
1
+ from modulitiz_micro.rete.ntp.ModuloNtpIt import ModuloNtpIt
2
+
3
+ from modulitiz_nano.util.beans.globalvar.AbstractGlobalVarBean import AbstractGlobalVarBean
4
+
5
+
6
+ class AbstractBasicGlobalVarBean(AbstractGlobalVarBean):
7
+ """
8
+ Classe da usare come base per definire la struttura di una classe che raggrupperà gli oggetti che verranno usati nel programma
9
+ """
10
+
11
+ def __init__(self,useNtp:bool,*args,**kwargs):
12
+ super().__init__(*args,**kwargs)
13
+ if useNtp:
14
+ self.moduloNtp=ModuloNtpIt(self.logger)
15
+
@@ -1,32 +1,26 @@
1
- from abc import ABC
2
-
3
- import schedule
4
-
5
- from modulitiz_micro.ModuloListe import ModuloListe
6
-
7
-
8
- class AbstractScheduler(ABC):
9
-
10
- def __init__(self):
11
- super().__init__()
12
-
13
- @staticmethod
14
- def cancelJobByTag(tag:str):
15
- schedule.clear(tag)
16
-
17
- @classmethod
18
- def rescheduleJob(cls,tag:str,timeStr:str)->schedule.Job|None:
19
- # recupero il job
20
- jobs=schedule.get_jobs(tag)
21
- if ModuloListe.isEmpty(jobs):
22
- return None
23
- job=jobs[0]
24
- # cambio l'orario
25
- job.at(timeStr)
26
- # cancello quello vecchio
27
- cls.cancelJobByTag(tag)
28
- # lo aggiungo alla lista
29
- job.scheduler.jobs.append(job)
30
- # lo rischedulo
31
- job._schedule_next_run()
32
- return job
1
+ import schedule
2
+
3
+ from modulitiz_nano.ModuloListe import ModuloListe
4
+
5
+
6
+ class ModuleScheduler(object):
7
+ @staticmethod
8
+ def cancelJobByTag(tag:str):
9
+ schedule.clear(tag)
10
+
11
+ @classmethod
12
+ def rescheduleJob(cls,tag:str,timeStr:str)->schedule.Job|None:
13
+ # recupero il job
14
+ jobs=schedule.get_jobs(tag)
15
+ if ModuloListe.isEmpty(jobs):
16
+ return None
17
+ job=jobs[0]
18
+ # cambio l'orario
19
+ job.at(timeStr)
20
+ # cancello quello vecchio
21
+ cls.cancelJobByTag(tag)
22
+ # lo aggiungo alla lista
23
+ job.scheduler.jobs.append(job)
24
+ # lo rischedulo
25
+ job._schedule_next_run()
26
+ return job
@@ -1,65 +1,58 @@
1
- Metadata-Version: 2.1
2
- Name: modulitiz_micro
3
- Version: 2.40.0
4
- Summary: Raccolta dei miei moduli - versione micro
5
- Author-email: tiz <sderfo1234@altervista.org>
6
- Classifier: Programming Language :: Python :: 3
7
- Classifier: License :: OSI Approved :: MIT License
8
- Classifier: Operating System :: OS Independent
9
- Requires-Python: >=3.11
10
- Description-Content-Type: text/markdown
11
- License-File: LICENSE
12
- Requires-Dist: beautifulsoup4>=4.12
13
- Requires-Dist: brotli>=1.1
14
- Requires-Dist: cachetools==5.5.0
15
- Requires-Dist: colorama>=0.4
16
- Requires-Dist: cryptography==45.0.6
17
- Requires-Dist: GitPython==3.1.44
18
- Requires-Dist: jsonpickle>=3.0
19
- Requires-Dist: mysql-connector-python==9.0.0
20
- Requires-Dist: mutagen>=1.47
21
- Requires-Dist: psutil>=5.9
22
- Requires-Dist: pynput>=1.7
23
- Requires-Dist: pyOpenSSL==25.1.0
24
- Requires-Dist: pypyodbc>=1.3
25
- Requires-Dist: pyserial>=3.5
26
- Requires-Dist: requests>=2.31
27
- Requires-Dist: schedule>=1.2
28
- Requires-Dist: telethon>=1.33
29
- Requires-Dist: webcolors>=1.13
30
-
31
- # modulitiz-micro
32
-
33
- It's a Python library that contains daily use or generic functions.
34
-
35
- ## Installation
36
-
37
- Use the package manager [pip](https://pip.pypa.io/en/stable/) to install:
38
-
39
- ```bash
40
- pip install modulitiz_micro
41
- ```
42
- The other required dependencies will be installed automatically.
43
-
44
- ## Usage
45
-
46
- ```python
47
- from modulitiz_micro.ModuloStringhe import ModuloStringhe
48
-
49
- # returns True
50
- ModuloStringhe.isEmpty(None)
51
- ModuloStringhe.isEmpty("")
52
-
53
- # returns False
54
- ModuloStringhe.isEmpty("a")
55
-
56
- ...
57
- ```
58
-
59
- ## Contributing
60
-
61
- If you find any bug you can write me at [sderfo1234@altervista.org](mailto:sderfo1234@altervista.org)
62
-
63
- ## License
64
-
65
- [MIT](https://choosealicense.com/licenses/mit/)
1
+ Metadata-Version: 2.4
2
+ Name: modulitiz_micro
3
+ Version: 2.42.0
4
+ Summary: Raccolta dei miei moduli - versione micro
5
+ Author-email: tiz <sderfo1234@altervista.org>
6
+ Classifier: Programming Language :: Python :: 3
7
+ Classifier: Operating System :: OS Independent
8
+ Requires-Python: >=3.11
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Requires-Dist: beautifulsoup4>=4.12
12
+ Requires-Dist: brotli>=1.1
13
+ Requires-Dist: cachetools==5.5.0
14
+ Requires-Dist: cryptography==45.0.6
15
+ Requires-Dist: GitPython==3.1.44
16
+ Requires-Dist: mysql_connector_python==9.0.0
17
+ Requires-Dist: mutagen>=1.47
18
+ Requires-Dist: pynput>=1.7
19
+ Requires-Dist: pyOpenSSL==25.1.0
20
+ Requires-Dist: pypyodbc>=1.3
21
+ Requires-Dist: pyserial>=3.5
22
+ Requires-Dist: requests>=2.31
23
+ Requires-Dist: schedule>=1.2
24
+ Requires-Dist: telethon>=1.33
25
+ Dynamic: license-file
26
+
27
+ # modulitiz-micro
28
+
29
+ It's a Python library that contains daily use or generic functions.
30
+ Extends another wheel: nano
31
+
32
+ ## Installation
33
+
34
+ Use the package manager [pip](https://pip.pypa.io/en/stable/) to install:
35
+
36
+ ```bash
37
+ pip install -U modulitiz_micro
38
+ ```
39
+ The other required dependencies will be installed automatically.
40
+
41
+ ## Usage
42
+
43
+ ```python
44
+ from modulitiz_micro.sistema.ModuloEnvVars import ModuloEnvVars
45
+
46
+ # returns the specified system variable
47
+ ModuloEnvVars.getOrNone("system variable")
48
+
49
+ ...
50
+ ```
51
+
52
+ ## Contributing
53
+
54
+ If you find any bug you can write me at [sderfo1234@altervista.org](mailto:sderfo1234@altervista.org)
55
+
56
+ ## License
57
+
58
+ [MIT](https://choosealicense.com/licenses/mit/)
@@ -0,0 +1,56 @@
1
+ modulitiz_micro/ModuloMeteo.py,sha256=NmRt71NEMT_rpofx2zks7sDQHuUMwul0sItNeHKCGrY,2249
2
+ modulitiz_micro/ModuloSeriale.py,sha256=ntLKa59ZZU8SApYbpOCK65rpGp88unoHU67ukmHY8Ps,1808
3
+ modulitiz_micro/ModuloTarghe.py,sha256=B73aU7vIQJwbNtM789bTTwQBZRhQEjm6736eq0zeJIc,1322
4
+ modulitiz_micro/database/AbstractDatabaseService.py,sha256=fh_ddr-EY8sYYxD-TmA3ofu68qCsk1l3GZU6UUKpOto,256
5
+ modulitiz_micro/database/AbstractSql.py,sha256=N8_PnVDAqXKq2kQtLFpvQ_9zaCKKOfvUelwg1g-1twc,1299
6
+ modulitiz_micro/database/ModuloSqlOracle.py,sha256=8v01bWgZ1TKs7UI9BFwmDw_he75D0sGuRTCoGcYIgl8,465
7
+ modulitiz_micro/database/ModuloSqlServer.py,sha256=SK5IqN_Z-nTAVBsdbtPkZAKM6iR8-s66DazjBWMKOko,1192
8
+ modulitiz_micro/database/eccezioni/EccezioneDbNoData.py,sha256=oJhZlvOiPC_AtKPl3nTqtrRE5fkmpn5RrlUMWN-z2uk,179
9
+ modulitiz_micro/database/mysql/AbstractBasicMysql.py,sha256=4ZKoY8XWErQpza-rLKMQSHhykkMGz2MPvBzSTwb0GrQ,3452
10
+ modulitiz_micro/database/mysql/ModuloMysql.py,sha256=1laKCQ7bZaJGzuTHNYoGK0oB9rMjdt69G5SDTD1d2FE,5365
11
+ modulitiz_micro/database/mysql/MysqlCommonConverter.py,sha256=bQ7bX2nNVTC8Hjp_Y_rNds_RS9YQOnQxnHlt6E58Yr0,1289
12
+ modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py,sha256=XV9LJ6t8gs8qkid-WM42GtLEmC1MUSxRkLwtbKgl8-g,158
13
+ modulitiz_micro/database/sqlite/AbstractBasicSQLite.py,sha256=tC6eRt_W_wm0Ne8hxejtqFRucC2uyUoamFaUjYFHJ68,3352
14
+ modulitiz_micro/database/sqlite/ModuloSQLite.py,sha256=y8i5EFFvsXUtDL5Z8jCGCgMNySfXhshPndqoRVxmM4Q,2301
15
+ modulitiz_micro/eccezioni/EccezioneCtrlC.py,sha256=P8C4YOc6hlh4V2b6d0W0VhT2bTTNx9ujxCXmbnfgCPM,177
16
+ modulitiz_micro/eccezioni/EccezioneScheduler.py,sha256=kSgpY-u802cOQK68ZFWlXtyXfGR6uU32QOM04AyF5Bo,181
17
+ modulitiz_micro/eccezioni/http/EccezioneHttp.py,sha256=SsbIY-OFsmHJGDK44-Wb0XXi8VlsAhdpGbi1KtitIU8,219
18
+ modulitiz_micro/eccezioni/http/EccezioneHttp404.py,sha256=MCFLvi1vkRS47BW1SQghHrxa2CPZKqMDEcpvXdtdICA,160
19
+ modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py,sha256=AP97Q1B_BUm5BYLLi8MNspyna6GwP5ycYNdVPRHE8DY,164
20
+ modulitiz_micro/files/cache/DatabaseCache.py,sha256=wuNEEFhW0_FJSP_oQnsLFSlM4E2DZNZsSCmOVQHvQhQ,2299
21
+ modulitiz_micro/files/cache/decorators/cacheRam.py,sha256=04UioLpE3bFaYebKB3ouoI-vyM4ZqasmshAFXLilaDQ,743
22
+ modulitiz_micro/files/git/ModuloGit.py,sha256=h_Gkz0gcy7TxkvOC6ASQrUn5LDb2rPsWIzwsMPS91Rs,793
23
+ modulitiz_micro/files/git/decorators/catchAndRaiseGitExceptions.py,sha256=9O7LjMRmpW022oxq2E_VOK0F2A8PqwHNAkzB9rWuZ6M,443
24
+ modulitiz_micro/files/git/exceptions/EccezioneGit.py,sha256=59s7KmZLpOT3Y3kkugCm7pRHoVzUdc13MZmD4dNa6fs,175
25
+ modulitiz_micro/gestionedom/GestioneDom.py,sha256=_P-_GqO0wXVSZ85btpldEQO3ui_MWLmnrgZeClvpDvU,1304
26
+ modulitiz_micro/iot/ModuleIotDevice.py,sha256=_N_gCHVdRRtuynj7NUUlU4tA_qkyrXa3Fol_GnTgygI,2646
27
+ modulitiz_micro/iot/beans/IotDeviceBean.py,sha256=lSxK80JW3PmhlbKMNX8-U1fjwciFp_MaxH8jYtJLGas,374
28
+ modulitiz_micro/iot/enums/IotOSEnum.py,sha256=jMGWbPo0gafFdog7f9VBX_vJQ86XiXYUcxVg-RM9-s8,191
29
+ modulitiz_micro/iot/espurna/ModuleEspurna.py,sha256=ueL-hDpaGzmU7mUvpLmu3YerJCJqrfTzATfOVeasD9I,142
30
+ modulitiz_micro/keylogger/EccezioneKeyLogger.py,sha256=KX2jDDC1bC2nbO_PmWzMWRH7J4YvsgF6I8b-89Z_RIs,204
31
+ modulitiz_micro/keylogger/ModuloKeylogger.py,sha256=NE2HjJ3dGiBI9udVjyEdHxdblLyztg6ECFZoq4GC-l0,1865
32
+ modulitiz_micro/rete/ModuloNetworking.py,sha256=3UkuivuJNRdVLtao2-Hiu1-AwpKbPkSdufZ8evLo_gg,2043
33
+ modulitiz_micro/rete/ModuloOpenVpn.py,sha256=l_DmH_Xnl4i1yohjcmQWAh6bAp24_Xs0NcxpRTYje9o,611
34
+ modulitiz_micro/rete/email/EmailBean.py,sha256=XEpVx_F0jBa35rIkINL_prfMaVYcm5Jic2oCAa-G7XI,163
35
+ modulitiz_micro/rete/email/ModuloEmail.py,sha256=U6UT5ZjprdSyg-TpXwMdARnAtNB0xZ3YW-qsuZP3sOA,2863
36
+ modulitiz_micro/rete/http/ModuloHttp.py,sha256=WCFMh2_BZEvY5TH1pYKyxC7dwurXFrSiAIohP3A2Xoo,4588
37
+ modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py,sha256=sML9J6r3jjlPZ1pRv-16ubP4vye7tfOBqAGoAi8Kbk4,2842
38
+ modulitiz_micro/rete/http/ModuloHttpUtils.py,sha256=3xrkV81Fp2BXnjwQC2bp0ILedK6CPj40fSmHSFrTdpg,2279
39
+ modulitiz_micro/rete/http/beans/HttpResponseBean.py,sha256=NZroTA-n3PofxK-gb_WqqXJQpFbcyj9qpxkauKsWaFc,197
40
+ modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py,sha256=HcTroELbAcQvJW1RJdahMK6LRHk3fpgQTusCtWzheOE,573
41
+ modulitiz_micro/rete/ntp/AbstractModuloNtp.py,sha256=VtKhW2woFpDPozklsoybDmoP-6CWxUMgvi3_5E0hUI0,2724
42
+ modulitiz_micro/rete/ntp/ModuloNtpIt.py,sha256=GD5DjouuoV4xeltgSOYNcqcCbrTqzvmr-9EXs4BBGmU,224
43
+ modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py,sha256=r77wGWmPgUbFfWo3bknBB6p2eQsCsNyTsLjnnaunOOQ,1214
44
+ modulitiz_micro/rete/socketserver/AbstractSocketServer.py,sha256=YU4SeGcVx8r42V0x8RfSmhG-YxteRE7-OoV0l6ns-E0,8955
45
+ modulitiz_micro/rete/ssl/ModuloSsl.py,sha256=RxqK709wWjndOiBhlVtihHC8iGKVsIz1kwD8hN1GjlU,1943
46
+ modulitiz_micro/sistema/ModuloEnvVars.py,sha256=DG7wGTHv8vN81r-sDBEhPuypkweOp2SOs8uiS1MbO-c,819
47
+ modulitiz_micro/sistema/ModuloSystemPipe.py,sha256=hvArYVsOKc7JFQcQAsDyoQsbM8Kgn9Ut9W6zxzl0kbI,1810
48
+ modulitiz_micro/social/telegram/AbstractModuloTelegram.py,sha256=k6iftS6OQMjEXDbkvaU4OG1EfDjfyjaq72OItTdlpgo,1683
49
+ modulitiz_micro/social/telegram/ModuloTelegramSimple.py,sha256=ubueZYzNRKQ6Q2iv_lXzLw54XBTT9CAMSmp3HPrxXEU,912
50
+ modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py,sha256=ywgBZVzWgKc955Us8fbnHvfabHQHJteID1FxKNshJgA,495
51
+ modulitiz_micro/util/scheduler/ModuleScheduler.py,sha256=bYlnc2fyyR78K3wmvh1j_R4Dx0KlLllsXvQS5qJO4IM,569
52
+ modulitiz_micro-2.42.0.dist-info/licenses/LICENSE,sha256=uPoUkUN5SDvh_W1oG_ar-EUYMcDiWAjhPukR_zrFUyc,1065
53
+ modulitiz_micro-2.42.0.dist-info/METADATA,sha256=aC5kaEX9iQUup4DuDrc5fwDP1w-Vf2_ed06hOLY24yA,1484
54
+ modulitiz_micro-2.42.0.dist-info/WHEEL,sha256=cRWFNt_CJSuf6BnJKAdKunDXUJxjAbWvbt_kstDCs1I,93
55
+ modulitiz_micro-2.42.0.dist-info/top_level.txt,sha256=ESJE0qtNJp3tbKPrffbFVjH511NSjJHxscfpdLjTpA8,16
56
+ modulitiz_micro-2.42.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.45.1)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py311-none-any
5
5