modulitiz-micro 2.43.0__py311-none-any.whl → 2.44.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 (63) hide show
  1. modulitiz_micro/ModuloMeteo.py +72 -72
  2. modulitiz_micro/ModuloSeriale.py +70 -70
  3. modulitiz_micro/ModuloTarghe.py +47 -47
  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 +62 -62
  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/http/huawei/fusionsolar/ModuleHuaweiFusionSolar.py +84 -0
  39. modulitiz_micro/rete/http/huawei/fusionsolar/beans/TokenBean.py +28 -0
  40. modulitiz_micro/rete/http/huawei/fusionsolar/beans/device/DeviceBean.py +6 -0
  41. modulitiz_micro/rete/http/huawei/fusionsolar/beans/device/DeviceDataBattery.py +22 -0
  42. modulitiz_micro/rete/http/huawei/fusionsolar/beans/device/DeviceDataPowerSensor.py +49 -0
  43. modulitiz_micro/rete/http/huawei/fusionsolar/beans/device/DeviceDataResidentialInverter.py +46 -0
  44. modulitiz_micro/rete/http/huawei/fusionsolar/enums/DevTypeIdEnum.py +21 -0
  45. modulitiz_micro/rete/http/huawei/fusionsolar/exceptions/ExceptionTooManyLogins.py +7 -0
  46. modulitiz_micro/rete/http/huawei/fusionsolar/service/AbstractHuaweiFusionSolar.py +71 -0
  47. modulitiz_micro/rete/ntp/AbstractModuloNtp.py +73 -73
  48. modulitiz_micro/rete/ntp/ModuloNtpIt.py +8 -8
  49. modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py +35 -35
  50. modulitiz_micro/rete/socketserver/AbstractSocketServer.py +267 -267
  51. modulitiz_micro/rete/ssl/ModuloSsl.py +56 -56
  52. modulitiz_micro/sistema/ModuloEnvVars.py +34 -34
  53. modulitiz_micro/sistema/ModuloSystemPipe.py +67 -67
  54. modulitiz_micro/social/telegram/AbstractModuloTelegram.py +53 -53
  55. modulitiz_micro/social/telegram/ModuloTelegramSimple.py +26 -26
  56. modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py +15 -15
  57. modulitiz_micro/util/scheduler/ModuleScheduler.py +26 -26
  58. {modulitiz_micro-2.43.0.dist-info → modulitiz_micro-2.44.0.dist-info}/METADATA +59 -59
  59. modulitiz_micro-2.44.0.dist-info/RECORD +65 -0
  60. {modulitiz_micro-2.43.0.dist-info → modulitiz_micro-2.44.0.dist-info}/licenses/LICENSE +21 -21
  61. modulitiz_micro-2.43.0.dist-info/RECORD +0 -56
  62. {modulitiz_micro-2.43.0.dist-info → modulitiz_micro-2.44.0.dist-info}/WHEEL +0 -0
  63. {modulitiz_micro-2.43.0.dist-info → modulitiz_micro-2.44.0.dist-info}/top_level.txt +0 -0
@@ -1,34 +1,34 @@
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
+ 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_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
+ 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_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
+ 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_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
+ 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,26 +1,26 @@
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
+ 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,59 +1,59 @@
1
- Metadata-Version: 2.4
2
- Name: modulitiz_micro
3
- Version: 2.43.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: modulitiz-micro>=2
12
- Requires-Dist: beautifulsoup4>=4.12
13
- Requires-Dist: brotli>=1.1
14
- Requires-Dist: cachetools==5.5.0
15
- Requires-Dist: cryptography==45.0.6
16
- Requires-Dist: GitPython==3.1.44
17
- Requires-Dist: mysql_connector_python==9.0.0
18
- Requires-Dist: mutagen>=1.47
19
- Requires-Dist: pynput>=1.7
20
- Requires-Dist: pyOpenSSL==25.1.0
21
- Requires-Dist: pypyodbc>=1.3
22
- Requires-Dist: pyserial>=3.5
23
- Requires-Dist: requests>=2.31
24
- Requires-Dist: schedule>=1.2
25
- Requires-Dist: telethon>=1.33
26
- Dynamic: license-file
27
-
28
- # modulitiz-micro
29
-
30
- It's a Python library that contains daily use or generic functions.
31
- Extends another wheel: nano
32
-
33
- ## Installation
34
-
35
- Use the package manager [pip](https://pip.pypa.io/en/stable/) to install:
36
-
37
- ```bash
38
- pip install -U modulitiz_micro
39
- ```
40
- The other required dependencies will be installed automatically.
41
-
42
- ## Usage
43
-
44
- ```python
45
- from modulitiz_micro.sistema.ModuloEnvVars import ModuloEnvVars
46
-
47
- # returns the specified system variable
48
- ModuloEnvVars.getOrNone("system variable")
49
-
50
- ...
51
- ```
52
-
53
- ## Contributing
54
-
55
- If you find any bug you can write me at [sderfo1234@altervista.org](mailto:sderfo1234@altervista.org)
56
-
57
- ## License
58
-
59
- [MIT](https://choosealicense.com/licenses/mit/)
1
+ Metadata-Version: 2.4
2
+ Name: modulitiz_micro
3
+ Version: 2.44.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: modulitiz-micro>=2
12
+ Requires-Dist: beautifulsoup4>=4.12
13
+ Requires-Dist: brotli>=1.1
14
+ Requires-Dist: cachetools==5.5.0
15
+ Requires-Dist: cryptography==45.0.6
16
+ Requires-Dist: GitPython==3.1.44
17
+ Requires-Dist: mysql_connector_python==9.0.0
18
+ Requires-Dist: mutagen>=1.47
19
+ Requires-Dist: pynput>=1.7
20
+ Requires-Dist: pyOpenSSL==25.1.0
21
+ Requires-Dist: pypyodbc>=1.3
22
+ Requires-Dist: pyserial>=3.5
23
+ Requires-Dist: requests>=2.31
24
+ Requires-Dist: schedule>=1.2
25
+ Requires-Dist: telethon>=1.33
26
+ Dynamic: license-file
27
+
28
+ # modulitiz-micro
29
+
30
+ It's a Python library that contains daily use or generic functions.
31
+ Extends another wheel: nano
32
+
33
+ ## Installation
34
+
35
+ Use the package manager [pip](https://pip.pypa.io/en/stable/) to install:
36
+
37
+ ```bash
38
+ pip install -U modulitiz_micro
39
+ ```
40
+ The other required dependencies will be installed automatically.
41
+
42
+ ## Usage
43
+
44
+ ```python
45
+ from modulitiz_micro.sistema.ModuloEnvVars import ModuloEnvVars
46
+
47
+ # returns the specified system variable
48
+ ModuloEnvVars.getOrNone("system variable")
49
+
50
+ ...
51
+ ```
52
+
53
+ ## Contributing
54
+
55
+ If you find any bug you can write me at [sderfo1234@altervista.org](mailto:sderfo1234@altervista.org)
56
+
57
+ ## License
58
+
59
+ [MIT](https://choosealicense.com/licenses/mit/)
@@ -0,0 +1,65 @@
1
+ modulitiz_micro/ModuloMeteo.py,sha256=U4H6IhsUGXLn2N_6MY-1Ti8YDDIwrKea-u2Ojx_7WAA,2321
2
+ modulitiz_micro/ModuloSeriale.py,sha256=k99YGWXOtEt44Q4mDE40IEeqMYGWfLC0LiPmgW63r-g,1878
3
+ modulitiz_micro/ModuloTarghe.py,sha256=FMKFtWUtQEB1IBnmUMwWhznxWitx_S7dJf0LsQsecaI,1369
4
+ modulitiz_micro/database/AbstractDatabaseService.py,sha256=RcSQgGZf-RHT0NzOTF1S35yf0nWOb93SzqSs1Rf2NbQ,269
5
+ modulitiz_micro/database/AbstractSql.py,sha256=R-Fyi8n_pwEtJf2IYFbTZ0Sr1P5_HxfQxDhPdYeu0Vo,1368
6
+ modulitiz_micro/database/ModuloSqlOracle.py,sha256=82pDbbT5sqe4rMcUzu9Nb2e7bROgs53yg1ufCg8GGkw,484
7
+ modulitiz_micro/database/ModuloSqlServer.py,sha256=jPIavBeX5VRue0yfqtvwvNiu40q8YgWIcqeo_PsJSQM,1235
8
+ modulitiz_micro/database/eccezioni/EccezioneDbNoData.py,sha256=d48jj2KbN9HSf4NAV8xSfBBhbKdhDvgU7TBCC5QBqSE,185
9
+ modulitiz_micro/database/mysql/AbstractBasicMysql.py,sha256=4U64tnQtH9uvnx7z_HGAjW_3Pp4ebqzzCt96cemxRSw,3566
10
+ modulitiz_micro/database/mysql/ModuloMysql.py,sha256=8k_ZKdxKGmwq1srEFh9wluU1_GijUGV3-BLGBO7VvA0,5528
11
+ modulitiz_micro/database/mysql/MysqlCommonConverter.py,sha256=jZFQykrgZ3L-hALfnCXnnN54OVfqb8xFtZs48WRt8nc,1336
12
+ modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py,sha256=gKNgFegRSYCNrNBlaq2helOyMhXjpVC_DKCt-i341Gs,164
13
+ modulitiz_micro/database/sqlite/AbstractBasicSQLite.py,sha256=619eSxtUv4stnYyl2BFeOf7Q5B3lWStUQ0aF6iUzLhs,3466
14
+ modulitiz_micro/database/sqlite/ModuloSQLite.py,sha256=F6GRya4pGfkMU_4XMc46v8XaDZ6WcFtlvCK94Trm-dY,2383
15
+ modulitiz_micro/eccezioni/EccezioneCtrlC.py,sha256=j9jKdx6YJ6uXGqdVxmMJUTvy2MxoyyQYR1WZ286bo_Q,184
16
+ modulitiz_micro/eccezioni/EccezioneScheduler.py,sha256=0o8zXixL79Zjwn9CZ7slsvmnhwgE7HDyMBBtcNM7v6s,188
17
+ modulitiz_micro/eccezioni/http/EccezioneHttp.py,sha256=mHCkSNyk24JsftM-WjKrE3CFE_9SUfq22NrpOeazmOY,227
18
+ modulitiz_micro/eccezioni/http/EccezioneHttp404.py,sha256=5i9jxfbbyZuzsa_ghQwNZJpSAY_QP9nX5w2qLhuqhso,166
19
+ modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py,sha256=DsO7hNeyeMEJsgzW33z3tK9SU53pQoqFNRiwczU6pL0,171
20
+ modulitiz_micro/files/cache/DatabaseCache.py,sha256=M0FrKNlNvSCiu4gTn5FNtGOdxXjmLtKGWYomL0WVqZ0,2400
21
+ modulitiz_micro/files/cache/decorators/cacheRam.py,sha256=eTviAFoEP9onO4zISJWbNyU-oZ_YtuFeUx3NOz6MWwM,769
22
+ modulitiz_micro/files/git/ModuloGit.py,sha256=OGaQqR6SYQlS2tsPUTmhw0EnQYi3jMohTpGPVQy--hQ,821
23
+ modulitiz_micro/files/git/decorators/catchAndRaiseGitExceptions.py,sha256=qn876kuuLlG7C1hU36AvnG_CJWu2YCcPbXC6xZEjzt4,462
24
+ modulitiz_micro/files/git/exceptions/EccezioneGit.py,sha256=NsII2vdBOcbQ7itdcdQ1A_dXU6L0mbsMCKxz7naFvc8,182
25
+ modulitiz_micro/gestionedom/GestioneDom.py,sha256=79z1Qg8P3rJl1fEHoCzGB6Lka3ka4JK06cFu0cQSRiI,1348
26
+ modulitiz_micro/iot/ModuleIotDevice.py,sha256=UA5_c97nDqEmu-zC8EXQOp5ylrB3bD76KGCxSEf1GkQ,2708
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=tDupIO151W90nBEo8XA-dyzOQ9zOJwNj7NA5p_buU2U,211
31
+ modulitiz_micro/keylogger/ModuloKeylogger.py,sha256=QUb7mIkiMPY9FL1Lmbt0l14YV0GD0YmungA8SA7F4kE,1938
32
+ modulitiz_micro/rete/ModuloNetworking.py,sha256=zBohFA9MrbistmPtadV-shjCjjhoa1SQFkTj5rjAWvY,2115
33
+ modulitiz_micro/rete/ModuloOpenVpn.py,sha256=4xEJzHyjT3U0a6mpanmPSUVRWdScA47_t_e8YJG9TM0,626
34
+ modulitiz_micro/rete/email/EmailBean.py,sha256=EOKLfBVqwBEkbWfywiUmk2iB5K2uVlykxsh4zB9red8,168
35
+ modulitiz_micro/rete/email/ModuloEmail.py,sha256=Laq-DtiAYPXpKW7iwU2z3IqQ5donLXpTVGB8zgmjWh8,2953
36
+ modulitiz_micro/rete/http/ModuloHttp.py,sha256=FAvfn_AiTuMnxLXixgLOmwH-YM8BJWe2Hc9OpqijDVs,4707
37
+ modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py,sha256=hhSQgDpXpcGXgWl14DxhiFtgZ3AFZUOQxYUeTaWMRZI,2933
38
+ modulitiz_micro/rete/http/ModuloHttpUtils.py,sha256=T-Yp_T-oqfwUDFokIYGOeO7a1lSGVsZesjDPhgDBbLM,2348
39
+ modulitiz_micro/rete/http/beans/HttpResponseBean.py,sha256=7JVywcWURv1I9rYKj4Kt9XLt7387wMZGTMefcsm7E3I,202
40
+ modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py,sha256=MRhCeNMcy3hw-A8W40gozUY0FiL0tyKASauA7hRW0fo,595
41
+ modulitiz_micro/rete/http/huawei/fusionsolar/ModuleHuaweiFusionSolar.py,sha256=14SSbVHh7W-k6n6HJ50RbdFmrUPo32jp5fW_vgHmmXY,3255
42
+ modulitiz_micro/rete/http/huawei/fusionsolar/beans/TokenBean.py,sha256=fVtnXYBcaahsOgNnbfZWir4KJVVAZcj5Y0MplMOESnU,700
43
+ modulitiz_micro/rete/http/huawei/fusionsolar/beans/device/DeviceBean.py,sha256=dEtC46PySPhUQDGDB4L1FtCDS2BG98uCietcIbpXLdM,98
44
+ modulitiz_micro/rete/http/huawei/fusionsolar/beans/device/DeviceDataBattery.py,sha256=7tugell4ZRhOXqIEuRcL6F-JHHRVBMiJ4fTeo-ckDfM,542
45
+ modulitiz_micro/rete/http/huawei/fusionsolar/beans/device/DeviceDataPowerSensor.py,sha256=r7NQIBYOd6zLu9_UnpgV3z2YiUdbtHEKaNWJLgl_9VA,1434
46
+ modulitiz_micro/rete/http/huawei/fusionsolar/beans/device/DeviceDataResidentialInverter.py,sha256=SrlIVKK0jsHDve18EObozxSvuEFo5Qm_GRpaZ7kGHcM,745
47
+ modulitiz_micro/rete/http/huawei/fusionsolar/enums/DevTypeIdEnum.py,sha256=2-0qO4ZesAxzUHFDz8JTLmpIwaSlKm_OomvneeGTgp4,357
48
+ modulitiz_micro/rete/http/huawei/fusionsolar/exceptions/ExceptionTooManyLogins.py,sha256=sfDYnaLiBmI-FrAXOwxzqcFDX9Il3ZUaP2IkpPnJolY,192
49
+ modulitiz_micro/rete/http/huawei/fusionsolar/service/AbstractHuaweiFusionSolar.py,sha256=4n6s8ufFk_akY_0qAviGHeKc3AIuVSVKGS6XL3Eohyo,2863
50
+ modulitiz_micro/rete/ntp/AbstractModuloNtp.py,sha256=gNSvGFxaIex9vugWS4XHCCWcc_aesGGHBqvsl2U9ZiI,2797
51
+ modulitiz_micro/rete/ntp/ModuloNtpIt.py,sha256=Un2tXPVcC5KJH3HkgvcpM7kgRQBprWTra_l91KJfcog,232
52
+ modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py,sha256=-XXyZO9vHiH7VrocG4jn9rYDSNsAmo1h0t5O-4wA37Y,1249
53
+ modulitiz_micro/rete/socketserver/AbstractSocketServer.py,sha256=CCmay_onORtTeeFuA6oYwxAKDbtYQeAF4XOdonb4qYE,9222
54
+ modulitiz_micro/rete/ssl/ModuloSsl.py,sha256=52t6DzZlxrc4iBsNaBs7jPvu_ZfiGRDD8ZDMsYFYZFc,1999
55
+ modulitiz_micro/sistema/ModuloEnvVars.py,sha256=3F02Rnz3Rz8hK4TipCgPOeHcBtwFKqcfFkJTwVl6FeI,853
56
+ modulitiz_micro/sistema/ModuloSystemPipe.py,sha256=P3lC0JySVA495O8H_w1ZqYJ_QTP4PYlROO-7jigpRoM,1877
57
+ modulitiz_micro/social/telegram/AbstractModuloTelegram.py,sha256=e1XSZse1GFsNYjdLEORLa7eG6gNuee4yPLkp41DP8go,1736
58
+ modulitiz_micro/social/telegram/ModuloTelegramSimple.py,sha256=TLWx64pl26cTno3pJHZu0Zt86ZEOYF2Lp5mQt1eekbY,938
59
+ modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py,sha256=eR6B-zTSbuZcdDsmcz4axhvKgAWLfYnWUCLdbx7OR_E,510
60
+ modulitiz_micro/util/scheduler/ModuleScheduler.py,sha256=kLxTfr-YPWZB-4XevNxQg71sSLbpakrRPOXLDjJ8JV4,595
61
+ modulitiz_micro-2.44.0.dist-info/licenses/LICENSE,sha256=b-Ia9Hv3N_FviXoFAXG44lDGbk4tCC0fBdduccm8nl0,1086
62
+ modulitiz_micro-2.44.0.dist-info/METADATA,sha256=4h8k8PcTNlYCPeIdjPBi7U7kly0LuQJBDYJ6O-J-39k,1577
63
+ modulitiz_micro-2.44.0.dist-info/WHEEL,sha256=cRWFNt_CJSuf6BnJKAdKunDXUJxjAbWvbt_kstDCs1I,93
64
+ modulitiz_micro-2.44.0.dist-info/top_level.txt,sha256=ESJE0qtNJp3tbKPrffbFVjH511NSjJHxscfpdLjTpA8,16
65
+ modulitiz_micro-2.44.0.dist-info/RECORD,,