modulitiz-micro 2.26.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 (100) hide show
  1. modulitiz_micro/ModuloBase64.py +61 -0
  2. modulitiz_micro/ModuloColorText.py +35 -0
  3. modulitiz_micro/ModuloDate.py +295 -0
  4. modulitiz_micro/ModuloFunzioni.py +58 -0
  5. modulitiz_micro/ModuloListe.py +150 -0
  6. modulitiz_micro/ModuloMeteo.py +72 -0
  7. modulitiz_micro/ModuloNumeri.py +130 -0
  8. modulitiz_micro/ModuloPyinstaller.py +29 -0
  9. modulitiz_micro/ModuloSeriale.py +61 -0
  10. modulitiz_micro/ModuloStatistiche.py +31 -0
  11. modulitiz_micro/ModuloStringhe.py +180 -0
  12. modulitiz_micro/ModuloTarghe.py +46 -0
  13. modulitiz_micro/android/ModuloAndroid.py +18 -0
  14. modulitiz_micro/android/ModuloAndroidAdb.py +48 -0
  15. modulitiz_micro/android/ModuloAndroidSim.py +130 -0
  16. modulitiz_micro/android/beans/SmsBean.py +12 -0
  17. modulitiz_micro/android/enums/AndroidSmsTypeEnum.py +17 -0
  18. modulitiz_micro/database/AbstractDatabaseService.py +13 -0
  19. modulitiz_micro/database/AbstractSql.py +49 -0
  20. modulitiz_micro/database/ModuloSqlOracle.py +19 -0
  21. modulitiz_micro/database/ModuloSqlServer.py +50 -0
  22. modulitiz_micro/database/eccezioni/EccezioneDbNoData.py +6 -0
  23. modulitiz_micro/database/mysql/AbstractBasicMysql.py +114 -0
  24. modulitiz_micro/database/mysql/ModuloMysql.py +151 -0
  25. modulitiz_micro/database/mysql/MysqlCommonConverter.py +47 -0
  26. modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py +6 -0
  27. modulitiz_micro/database/sqlite/AbstractBasicSQLite.py +114 -0
  28. modulitiz_micro/database/sqlite/ModuloSQLite.py +82 -0
  29. modulitiz_micro/eccezioni/EccezioneBase.py +7 -0
  30. modulitiz_micro/eccezioni/EccezioneCtrlC.py +7 -0
  31. modulitiz_micro/eccezioni/EccezioneRuntime.py +7 -0
  32. modulitiz_micro/eccezioni/EccezioneScheduler.py +7 -0
  33. modulitiz_micro/eccezioni/EccezioneSoNonSupportato.py +7 -0
  34. modulitiz_micro/eccezioni/http/EccezioneHttp.py +8 -0
  35. modulitiz_micro/eccezioni/http/EccezioneHttp404.py +7 -0
  36. modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py +7 -0
  37. modulitiz_micro/files/ModuloFiles.py +173 -0
  38. modulitiz_micro/files/ModuloLogging.py +69 -0
  39. modulitiz_micro/files/ModuloZip.py +42 -0
  40. modulitiz_micro/files/cache/CacheBean.py +5 -0
  41. modulitiz_micro/files/cache/CacheRam.py +29 -0
  42. modulitiz_micro/files/cache/DatabaseCache.py +91 -0
  43. modulitiz_micro/files/cache/decorators/cacheRam.py +26 -0
  44. modulitiz_micro/files/git/ModuloGit.py +15 -0
  45. modulitiz_micro/gestionedom/GestioneDom.py +44 -0
  46. modulitiz_micro/init/AbstractBasicInit.py +27 -0
  47. modulitiz_micro/init/AbstractInit.py +11 -0
  48. modulitiz_micro/keylogger/EccezioneKeyLogger.py +7 -0
  49. modulitiz_micro/keylogger/ModuloKeylogger.py +73 -0
  50. modulitiz_micro/multithreading/ModuloThread.py +26 -0
  51. modulitiz_micro/multithreading/ModuloThreadLogger.py +8 -0
  52. modulitiz_micro/multithreading/ModuloThreadWithCallbackError.py +25 -0
  53. modulitiz_micro/nlp/ModuloNlp.py +36 -0
  54. modulitiz_micro/nlp/ModuloNlpDateAndTime.py +59 -0
  55. modulitiz_micro/rete/ModuloEmail.py +69 -0
  56. modulitiz_micro/rete/ModuloNetworking.py +64 -0
  57. modulitiz_micro/rete/ModuloOpenVpn.py +15 -0
  58. modulitiz_micro/rete/http/ModuloHttp.py +114 -0
  59. modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py +91 -0
  60. modulitiz_micro/rete/http/ModuloHttpUtils.py +66 -0
  61. modulitiz_micro/rete/http/beans/HttpResponseBean.py +5 -0
  62. modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py +22 -0
  63. modulitiz_micro/rete/ntp/AbstractModuloNtp.py +73 -0
  64. modulitiz_micro/rete/ntp/ModuloNtpIt.py +8 -0
  65. modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py +35 -0
  66. modulitiz_micro/rete/socketserver/AbstractSocketServer.py +267 -0
  67. modulitiz_micro/rete/ssl/ModuloSsl.py +56 -0
  68. modulitiz_micro/sistema/EnvVarsEnum.py +9 -0
  69. modulitiz_micro/sistema/ModuloEnvVars.py +34 -0
  70. modulitiz_micro/sistema/ModuloSystem.py +298 -0
  71. modulitiz_micro/sistema/ModuloSystemPipe.py +67 -0
  72. modulitiz_micro/social/telegram/ModuloTelegram.py +52 -0
  73. modulitiz_micro/social/telegram/ModuloTelegramSimple.py +26 -0
  74. modulitiz_micro/util/beans/conf/AbstractBasicConfBean.py +11 -0
  75. modulitiz_micro/util/beans/conf/AbstractConfBean.py +16 -0
  76. modulitiz_micro/util/beans/fileconf/AbstractBasicFileConfBean.py +11 -0
  77. modulitiz_micro/util/beans/fileconf/AbstractFileConfBean.py +13 -0
  78. modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py +15 -0
  79. modulitiz_micro/util/beans/globalvar/AbstractGlobalVarBean.py +34 -0
  80. modulitiz_micro/util/decorators/noAwait.py +23 -0
  81. modulitiz_micro/util/pip/AbstractModuloPip.py +41 -0
  82. modulitiz_micro/util/pip/ModuloPip.py +49 -0
  83. modulitiz_micro/util/scheduler/AbstractScheduler.py +32 -0
  84. modulitiz_micro/util/spooler/AbstractSpooler.py +14 -0
  85. modulitiz_micro/util/spooler/Spooler.py +18 -0
  86. modulitiz_micro/util/spooler/beans/QueueBean.py +8 -0
  87. modulitiz_micro/util/spooler/decorators/spooler.py +49 -0
  88. modulitiz_micro/util/spooler/eccezioni/EccezioneSpooler.py +7 -0
  89. modulitiz_micro/util/spooler/eccezioni/EccezioneSpoolerFull.py +7 -0
  90. modulitiz_micro/util/unittesting/AbstractOverrideTestUtil.py +18 -0
  91. modulitiz_micro/util/unittesting/AbstractTestUtil.py +11 -0
  92. modulitiz_micro/util/unittesting/ModuloRunUnitTest.py +25 -0
  93. modulitiz_micro/util/wheel/ModuloBuildWheel.py +118 -0
  94. modulitiz_micro/util/wheel/ModuloToml.py +40 -0
  95. modulitiz_micro/util/wheel/ModuloWheel.py +12 -0
  96. modulitiz_micro-2.26.0.dist-info/LICENSE +21 -0
  97. modulitiz_micro-2.26.0.dist-info/METADATA +63 -0
  98. modulitiz_micro-2.26.0.dist-info/RECORD +100 -0
  99. modulitiz_micro-2.26.0.dist-info/WHEEL +5 -0
  100. modulitiz_micro-2.26.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,32 @@
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
@@ -0,0 +1,14 @@
1
+ from abc import ABC
2
+
3
+ from modulitiz_micro.util.spooler.beans.QueueBean import QueueBean
4
+
5
+
6
+ class AbstractSpooler(ABC):
7
+ beans:dict[str,QueueBean]={}
8
+
9
+ @classmethod
10
+ def _areJobsNotDone(cls)->bool:
11
+ for bean in cls.beans.values():
12
+ if bean.size>0:
13
+ return True
14
+ return False
@@ -0,0 +1,18 @@
1
+ import time
2
+
3
+ from modulitiz_micro.util.spooler.AbstractSpooler import AbstractSpooler
4
+ from modulitiz_micro.util.spooler.beans.QueueBean import QueueBean
5
+
6
+
7
+ class Spooler(AbstractSpooler):
8
+ @staticmethod
9
+ def increaseSize(bean:QueueBean):
10
+ bean.size+=1
11
+ @staticmethod
12
+ def decreaseSize(bean:QueueBean):
13
+ bean.size-=1
14
+
15
+ @classmethod
16
+ def waitUntilJobsDone(cls):
17
+ while cls._areJobsNotDone():
18
+ time.sleep(0.1)
@@ -0,0 +1,8 @@
1
+ import threading
2
+
3
+
4
+ class QueueBean(object):
5
+ def __init__(self):
6
+ self.lock=threading.Lock()
7
+ self.size=0
8
+ self.countConsecutiveOverSize=0
@@ -0,0 +1,49 @@
1
+ from functools import wraps
2
+
3
+ from modulitiz_micro.ModuloFunzioni import ModuloFunzioni
4
+ from modulitiz_micro.util.spooler.Spooler import Spooler
5
+ from modulitiz_micro.util.spooler.beans.QueueBean import QueueBean
6
+ from modulitiz_micro.util.spooler.eccezioni.EccezioneSpooler import EccezioneSpooler
7
+ from modulitiz_micro.util.spooler.eccezioni.EccezioneSpoolerFull import EccezioneSpoolerFull
8
+
9
+
10
+ def spooler(maxSize:int,notifyIfConsecutiveSizeGreaterThan:int=0):
11
+ """
12
+ Usare questo decorator per produrre (creare) la coda di azioni e consumarla (scodare) non appena c'è uno slot libero.
13
+ :param maxSize: dimensione massima della coda
14
+ :param notifyIfConsecutiveSizeGreaterThan: cosa fare se la coda è piena:
15
+ - 0: notifica sempre
16
+ - >0: notifica solo se maggiore di N
17
+ """
18
+ # controllo parametri di input
19
+ if notifyIfConsecutiveSizeGreaterThan>maxSize:
20
+ raise EccezioneSpooler("%d non può essere maggiore di %d"%(notifyIfConsecutiveSizeGreaterThan,maxSize))
21
+
22
+ def decorator(funzione):
23
+ @wraps(funzione)
24
+ def wrapped(*args,**kwargs):
25
+ fullPathFunction=ModuloFunzioni.getFullyQualifiedName(funzione)
26
+ bean=Spooler.beans.get(fullPathFunction,None)
27
+ if bean is None:
28
+ bean=QueueBean()
29
+ Spooler.beans[fullPathFunction]=bean
30
+ # controllo se ho raggiunto o superato il limite
31
+ if bean.size>=maxSize:
32
+ bean.countConsecutiveOverSize+=1
33
+ if bean.countConsecutiveOverSize>notifyIfConsecutiveSizeGreaterThan:
34
+ bean.countConsecutiveOverSize=0
35
+ raise EccezioneSpoolerFull()
36
+ else:
37
+ bean.countConsecutiveOverSize=0
38
+ # chiamo la funzione
39
+ Spooler.increaseSize(bean)
40
+ try:
41
+ with bean.lock:
42
+ output=funzione(*args,**kwargs)
43
+ except Exception as e:
44
+ Spooler.decreaseSize(bean)
45
+ raise e
46
+ Spooler.decreaseSize(bean)
47
+ return output
48
+ return wrapped
49
+ return decorator
@@ -0,0 +1,7 @@
1
+ from modulitiz_micro.eccezioni.EccezioneBase import EccezioneBase
2
+
3
+
4
+ class EccezioneSpooler(EccezioneBase):
5
+
6
+ def __init__(self,msg:str):
7
+ super().__init__(msg)
@@ -0,0 +1,7 @@
1
+ from modulitiz_micro.util.spooler.eccezioni.EccezioneSpooler import EccezioneSpooler
2
+
3
+
4
+ class EccezioneSpoolerFull(EccezioneSpooler):
5
+
6
+ def __init__(self):
7
+ super().__init__("Spooler pieno")
@@ -0,0 +1,18 @@
1
+ from abc import ABC
2
+
3
+
4
+ class AbstractOverrideTestUtil(ABC):
5
+ """
6
+ Solo le funzioni statiche devono essere revertate
7
+ """
8
+
9
+ def __init__(self):
10
+ super().__init__()
11
+ self._cache={}
12
+
13
+ def __enter__(self):
14
+ self._cache.clear()
15
+ return self
16
+
17
+ def __exit__(self,*args,**kwargs):
18
+ self._cache.clear()
@@ -0,0 +1,11 @@
1
+ import unittest
2
+
3
+
4
+ class AbstractTestUtil(unittest.TestCase):
5
+ overrideTestUtil=None
6
+
7
+ def __init__(self,*args,**kwargs):
8
+ super().__init__(*args,**kwargs)
9
+ logger=type('test',(),{})()
10
+ logger.exception=logger.error=logger.warning=logger.info=logger.debug=print
11
+ self.logger=logger
@@ -0,0 +1,25 @@
1
+ import os
2
+ import pkgutil
3
+ import unittest
4
+
5
+
6
+ class ModuloRunUnitTest(object):
7
+
8
+ @classmethod
9
+ def startTests(cls,currentFilePath:str):
10
+ suite=cls.__createTestSuite(currentFilePath)
11
+ unittest.TextTestRunner(verbosity=2).run(suite)
12
+
13
+ @staticmethod
14
+ def __createTestSuite(currentFilePath:str)->unittest.TestSuite:
15
+ paths = [x[0] for x in os.walk(os.path.dirname(currentFilePath))]
16
+ testLoader=unittest.TestLoader()
17
+ suite=unittest.TestSuite()
18
+ for modFinder, modName, _isPkg in pkgutil.walk_packages(paths):
19
+ spec=modFinder.find_spec(modName)
20
+ loader=spec.loader
21
+ module=loader.load_module(modName)
22
+ # carico ogni test presente in un modulo
23
+ for tests in testLoader.loadTestsFromModule(module):
24
+ suite.addTests(tests)
25
+ return suite
@@ -0,0 +1,118 @@
1
+ import os
2
+ import shutil
3
+
4
+ from modulitiz_micro.ModuloColorText import ModuloColorText
5
+ from modulitiz_micro.ModuloListe import ModuloListe
6
+ from modulitiz_micro.files.ModuloFiles import ModuloFiles
7
+ from modulitiz_micro.sistema.ModuloSystem import ModuloSystem
8
+ from modulitiz_micro.util.wheel.ModuloToml import ModuloToml
9
+ from modulitiz_micro.files.git.ModuloGit import ModuloGit
10
+
11
+
12
+ class ModuloBuildWheel(object):
13
+ CMD_PYTHON="python"
14
+ PATTERN_NOMEFILE_WHEEL="{}-{}-{}-none-any.whl"
15
+ MAX_VERSION_TO_KEEP=10
16
+
17
+ def __init__(self,nomeModulo:str,percorsoFileMain:str):
18
+ self.nomeModulo=nomeModulo
19
+ self.nomeModuloNormalizzato=nomeModulo.replace("_","-")
20
+
21
+ self.percorsoCartellaSource=os.path.dirname(percorsoFileMain)
22
+ self.percorsoCartellaRoot=os.path.dirname(self.percorsoCartellaSource)
23
+ self.git=ModuloGit(os.path.dirname(self.percorsoCartellaRoot))
24
+ self.skipUnitTest=False
25
+
26
+ self.moduloToml=ModuloToml("pyproject.toml")
27
+ self.versionOld=None
28
+ self.versionNew=None
29
+ self.nomefileWheel=None
30
+
31
+ def doWork(self):
32
+ self.versionOld=self.moduloToml.retrieveVersion()
33
+ self.skipUnitTest=input("Skip unit test? y, n (default = n):")=='y'
34
+ # chiedo quale versione aumentare (major, minor, bug fix)
35
+ tipoVersione=input("Which version increment? 1=major, 2=minor, 3=bug fix (default = 2):")
36
+ if tipoVersione=="":
37
+ tipoVersione=2
38
+ else:
39
+ tipoVersione=int(tipoVersione)
40
+ # calcolo la prossima versione
41
+ self.__computeVersionNew(tipoVersione)
42
+ # stampo info
43
+ msg=f"Build {self.nomeModulo} {self.versionNew}"
44
+ ModuloSystem.setTitoloFinestra(msg)
45
+ print("""{}
46
+ ============================================================
47
+ {} (from version {})
48
+ ============================================================
49
+ {}""".format(ModuloColorText.GRASSETTO,msg,self.versionOld,ModuloColorText.DEFAULT))
50
+ # cambio cartella
51
+ os.chdir(self.percorsoCartellaSource)
52
+ if self.__doUnitTests() is True:
53
+ return
54
+ # aggiorno versione
55
+ self.moduloToml.updateVersion(self.versionNew)
56
+ # costruisco wheel
57
+ ModuloSystem.systemCallPrintOutput(f'{self.CMD_PYTHON} -m pip install --upgrade build',None)
58
+ print()
59
+ percorsoCartellaOut=os.path.dirname(self.percorsoCartellaRoot)
60
+ percorsoCartellaOut=ModuloFiles.pathJoin(ModuloFiles.pathJoin(percorsoCartellaOut,"wheels"),self.nomeModuloNormalizzato)
61
+ cmd='{} -m build --wheel --outdir "{}"'.format(self.CMD_PYTHON,percorsoCartellaOut)
62
+ ModuloSystem.systemCallPrintOutput(cmd,None)
63
+ print()
64
+ # cancello cartelle temporanee
65
+ shutil.rmtree(ModuloFiles.pathJoin(self.percorsoCartellaSource,"build"))
66
+ shutil.rmtree(ModuloFiles.pathJoin(self.percorsoCartellaSource,self.nomeModulo+".egg-info"))
67
+ # installo wheel
68
+ self.nomefileWheel=self.PATTERN_NOMEFILE_WHEEL.format(self.nomeModulo,self.versionNew,self.moduloToml.retrieveMinPyVersion())
69
+ percorsoWheel=ModuloFiles.pathJoin(percorsoCartellaOut,self.nomefileWheel)
70
+ cmd='{} -m pip install -U "{}"'.format(self.CMD_PYTHON,percorsoWheel)
71
+ ModuloSystem.systemCallPrintOutput(cmd,None)
72
+ print()
73
+ # aggiungo il file al repo
74
+ self.git.inner.index.add(percorsoWheel)
75
+ # se presenti, cancello le versioni troppo vecchie
76
+ print()
77
+ oldFilenames=ModuloListe.humanOrder(os.listdir(percorsoCartellaOut))[:-self.MAX_VERSION_TO_KEEP]
78
+ if len(oldFilenames)==0:
79
+ return
80
+ print("Cancello le versioni troppo vecchie:")
81
+ for file in oldFilenames:
82
+ deletedFilename=self.git.inner.index.remove(ModuloFiles.pathJoin(percorsoCartellaOut,file),working_tree=True)
83
+ print("\n".join(deletedFilename))
84
+
85
+ def __doUnitTests(self) -> bool:
86
+ if self.skipUnitTest is True:
87
+ return False
88
+ nomefileTest=ModuloFiles.pathJoin(self.percorsoCartellaSource,"test/TestMain.py")
89
+ print("Inizio test...")
90
+ cmd='%s "%s"'%(self.CMD_PYTHON,nomefileTest)
91
+ righe=[]
92
+ for riga in ModuloSystem.systemCallYieldOutput(cmd,None):
93
+ print("%s>>>%s %s"%(ModuloColorText.BLU,ModuloColorText.DEFAULT,riga))
94
+ righe.append(riga)
95
+ righe=reversed(righe[-10:])
96
+ righe=[x.strip() for x in righe]
97
+ righe=[x if x!="" and x!=ModuloColorText.DEFAULT else None for x in righe]
98
+ righe=ModuloListe.eliminaElementiVuoti(righe)
99
+ ultimaRiga=righe[0]
100
+ PATTERN_TO_PRINT="""{}
101
+ ==================================================
102
+ {}
103
+ ==================================================
104
+ """+ModuloColorText.DEFAULT
105
+ if ultimaRiga!="OK":
106
+ print(PATTERN_TO_PRINT.format(ModuloColorText.ROSSO,"ERRORE nei test"))
107
+ return True
108
+ print(PATTERN_TO_PRINT.format(ModuloColorText.VERDE,"test completati con successo"))
109
+ return False
110
+
111
+ def __computeVersionNew(self,tipoVersione:int):
112
+ arr=[int(x) for x in self.versionOld.split(".")]
113
+ arr[tipoVersione-1]+=1
114
+ if tipoVersione!=len(arr):
115
+ for i in range(tipoVersione,len(arr)):
116
+ arr[i]=0
117
+ arr=[str(x) for x in arr]
118
+ self.versionNew=".".join(arr)
@@ -0,0 +1,40 @@
1
+ import re
2
+
3
+ from modulitiz_micro.ModuloStringhe import ModuloStringhe
4
+ from modulitiz_micro.files.ModuloFiles import ModuloFiles
5
+ from modulitiz_micro.util.pip.ModuloPip import ModuloPip
6
+
7
+
8
+ class ModuloToml(object):
9
+ """
10
+ Operazioni sul file .toml
11
+ """
12
+ REGEX_TOML_VERSION=r'version *= *"(%s)"'%(ModuloPip.REGEX_VERSION,)
13
+
14
+ def __init__(self,nomefile:str):
15
+ self.nomefile=nomefile
16
+
17
+ def retrieveMinPyVersion(self)->str:
18
+ output=self.__retrieveByRegex(r'python-tag* \= *"(py\d+)"')
19
+ if output is None:
20
+ return "py3"
21
+ return output
22
+
23
+ def retrieveVersion(self)->str|None:
24
+ """
25
+ Recupera la versione di una wheel leggendo il file .toml
26
+ """
27
+ return self.__retrieveByRegex(self.REGEX_TOML_VERSION)
28
+
29
+ def updateVersion(self,version:str):
30
+ cont=ModuloStringhe.normalizzaEol(ModuloFiles.readFileText(self.nomefile,True))
31
+ cont=re.sub(self.REGEX_TOML_VERSION,r'version = "%s"'%(version,),cont)
32
+ with ModuloFiles.open(self.nomefile,'wt') as fp:
33
+ fp.write(cont)
34
+
35
+ def __retrieveByRegex(self,regex:str)->str|None:
36
+ cont=ModuloFiles.readFileText(self.nomefile,True)
37
+ ricerca=re.search(regex,cont)
38
+ if ricerca is None:
39
+ return None
40
+ return ricerca.group(1)
@@ -0,0 +1,12 @@
1
+ import importlib.metadata
2
+
3
+ class ModuloWheel(object):
4
+
5
+ def __init__(self,modulo):
6
+ self.__modulo=modulo
7
+
8
+ def retrieveVersion(self)->str:
9
+ """
10
+ Recupera la versione di una wheel, indipendentemente in che modo sia costruita (.toml, setup.py, poetry, ...)
11
+ """
12
+ return importlib.metadata.version(self.__modulo.__name__)
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023-2040 tiz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,63 @@
1
+ Metadata-Version: 2.1
2
+ Name: modulitiz_micro
3
+ Version: 2.26.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: GitPython==3.1.44
17
+ Requires-Dist: jsonpickle>=3.0
18
+ Requires-Dist: mysql-connector-python==9.0.0
19
+ Requires-Dist: mutagen>=1.47
20
+ Requires-Dist: psutil>=5.9
21
+ Requires-Dist: pynput>=1.7
22
+ Requires-Dist: pyOpenSSL>=23.3
23
+ Requires-Dist: pypyodbc>=1.3
24
+ Requires-Dist: pyserial>=3.5
25
+ Requires-Dist: requests>=2.31
26
+ Requires-Dist: schedule>=1.2
27
+ Requires-Dist: telethon>=1.33
28
+ Requires-Dist: webcolors>=1.13
29
+
30
+ # modulitiz-micro
31
+
32
+ È una libreria Python che racchiude funzioni di uso comune e/o generico.
33
+
34
+ ## Installation
35
+
36
+ Use the package manager [pip](https://pip.pypa.io/en/stable/) to install:
37
+
38
+ ```bash
39
+ pip install modulitiz_micro-x.x.x-py3-none-any.whl
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ ```python
45
+ from modulitiz_micro.ModuloStringhe import ModuloStringhe
46
+
47
+ # returns True
48
+ ModuloStringhe.isEmpty(None)
49
+ ModuloStringhe.isEmpty("")
50
+
51
+ # returns False
52
+ ModuloStringhe.isEmpty("a")
53
+
54
+ ...
55
+ ```
56
+
57
+ ## Contributing
58
+
59
+ Se trovi dei bug contattami all'email [sderfo1234@altervista.org](mailto:sderfo1234@altervista.org)
60
+
61
+ ## License
62
+
63
+ [MIT](https://choosealicense.com/licenses/mit/)
@@ -0,0 +1,100 @@
1
+ modulitiz_micro/ModuloBase64.py,sha256=yPVqRM2JbRfzph3Pgxdv2QCD-NktKySKp0Lo4IIznGM,1805
2
+ modulitiz_micro/ModuloColorText.py,sha256=fpkkX3dJRoKILxaHUk5rpCOoQ0FXsWR7jlQpFg3XQZI,793
3
+ modulitiz_micro/ModuloDate.py,sha256=hrLFnKmFZbsfD8A3HDyzMyEH6OD8s7Rh7qC3maaJu_w,7695
4
+ modulitiz_micro/ModuloFunzioni.py,sha256=H4PZHpI3-gnfgGCNP2Xv2l_aUH2OtyVklbHbOIL-z1c,1506
5
+ modulitiz_micro/ModuloListe.py,sha256=K6McFzKe1WPiq6uPPuACnUG-SWrvNFt6JCs3yRWgVD0,3431
6
+ modulitiz_micro/ModuloMeteo.py,sha256=vq8gkNHBNNGF_e1Em2AuGVHj-71MhixW9FaIUTMEvsQ,2238
7
+ modulitiz_micro/ModuloNumeri.py,sha256=G7Ew3JVNItFm2LZ2XCtEAECkICAqObJd6DSc_LsNsnE,2676
8
+ modulitiz_micro/ModuloPyinstaller.py,sha256=8uE9p2PaLS5bzWACO5Ii8CAIfq8eKYFV7EMG4zFPYu8,816
9
+ modulitiz_micro/ModuloSeriale.py,sha256=j0o0OHoKCCNb47d_T4xkS7HPkeiYGkpvWl18pQhcxA8,1460
10
+ modulitiz_micro/ModuloStatistiche.py,sha256=EiRkwplWazmRJgWyqJiXGJSMftRo3tjIi5bN2aFG_xg,1285
11
+ modulitiz_micro/ModuloStringhe.py,sha256=xPojgp5xvjnvlsW08RrCCQzWb-RMl3N0BfTKi4a3UtQ,5690
12
+ modulitiz_micro/ModuloTarghe.py,sha256=80fdzHCTAoSpyUsjc7pQJ9-ff6g9eQudMVkmpCcMWjc,1310
13
+ modulitiz_micro/android/ModuloAndroid.py,sha256=UXnnAatk2G9aE-PNSyX5DhOvdfrfcgOzH7ZTOva13jA,587
14
+ modulitiz_micro/android/ModuloAndroidAdb.py,sha256=ePr7sn4YL84ToyWI_P8tb9JyFwnOQlvTTulVorUL03k,1538
15
+ modulitiz_micro/android/ModuloAndroidSim.py,sha256=CTCH9fIjOwcrgaCgSDBNJI_njsJA3WwuQhxgsMKiqr4,4645
16
+ modulitiz_micro/android/beans/SmsBean.py,sha256=64ZXl20T2BeNCrSGhBmupwFRuqa-gjsCVsvyINdd1BM,432
17
+ modulitiz_micro/android/enums/AndroidSmsTypeEnum.py,sha256=SJYmByNW6eZh_Z2rFirqvsNzvVXSalaaA2Dp1gH-ids,248
18
+ modulitiz_micro/database/AbstractDatabaseService.py,sha256=J9lp8Xfc5tnw9771OiT_q3fWkfPb7rCuTrH-xdsnT8o,257
19
+ modulitiz_micro/database/AbstractSql.py,sha256=-PyuAOU2fBQZdFmxqWVPBOlfsEAm376N8eh5v15unJE,945
20
+ modulitiz_micro/database/ModuloSqlOracle.py,sha256=8v01bWgZ1TKs7UI9BFwmDw_he75D0sGuRTCoGcYIgl8,465
21
+ modulitiz_micro/database/ModuloSqlServer.py,sha256=XJqvlcI3aT9lyZy29l9xxvhSm3kB__sMCMdlTEP7HPw,1402
22
+ modulitiz_micro/database/eccezioni/EccezioneDbNoData.py,sha256=YcZkvt9n_zdXPhbY6d6NkwBi3h8Dg-4Z_jFcFz8SOTE,180
23
+ modulitiz_micro/database/mysql/AbstractBasicMysql.py,sha256=f28rL7jFxZ87aPUHa12HySnCEyrLE6qpoQ02lqlO0yg,3467
24
+ modulitiz_micro/database/mysql/ModuloMysql.py,sha256=7hSszK4geHGYFcg28ZHtKbeDfX6P0e6hQYucNW4DQ-w,5124
25
+ modulitiz_micro/database/mysql/MysqlCommonConverter.py,sha256=bQ7bX2nNVTC8Hjp_Y_rNds_RS9YQOnQxnHlt6E58Yr0,1289
26
+ modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py,sha256=XV9LJ6t8gs8qkid-WM42GtLEmC1MUSxRkLwtbKgl8-g,158
27
+ modulitiz_micro/database/sqlite/AbstractBasicSQLite.py,sha256=mFLU8Tqzu6nBF7eUB6eIEBg9-KXcMmlgNkUjnjTCJOE,3356
28
+ modulitiz_micro/database/sqlite/ModuloSQLite.py,sha256=mGB6Z3Tg6bJH3Hdx6CwZbvH4-vFDmqbcHM5nkbcwREs,2307
29
+ modulitiz_micro/eccezioni/EccezioneBase.py,sha256=q-Z8aE8aCNicAVurG4d4IQMQJDbDwMMIBkyNd7EgZRo,186
30
+ modulitiz_micro/eccezioni/EccezioneCtrlC.py,sha256=43LBFkTU0cJwy39aJ9YGiv-FVkCA7K5MeBK77F8q1NE,178
31
+ modulitiz_micro/eccezioni/EccezioneRuntime.py,sha256=SoXyDfWrYKCiB8rziQLT2tU8d2ZFbzkRFo8OwSWu05w,161
32
+ modulitiz_micro/eccezioni/EccezioneScheduler.py,sha256=Vmq17c0q8xRQgyUYGGlE14EitYFkQEbCNKzZix1dP5M,182
33
+ modulitiz_micro/eccezioni/EccezioneSoNonSupportato.py,sha256=XPDq-uZRdq7aqo9T9wf7IiD_szpZE8gXmBZCy_B7o48,188
34
+ modulitiz_micro/eccezioni/http/EccezioneHttp.py,sha256=sHr-uaXcPDOz-ucvcCRy-GCJ_oe2I_7s-UFeW83UnkI,220
35
+ modulitiz_micro/eccezioni/http/EccezioneHttp404.py,sha256=MCFLvi1vkRS47BW1SQghHrxa2CPZKqMDEcpvXdtdICA,160
36
+ modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py,sha256=AP97Q1B_BUm5BYLLi8MNspyna6GwP5ycYNdVPRHE8DY,164
37
+ modulitiz_micro/files/ModuloFiles.py,sha256=NbGUGcO1-BxhlXUYV-Qf_TI5sQbfK5X5Fs1bMyi-mBU,5510
38
+ modulitiz_micro/files/ModuloLogging.py,sha256=uUFJN4x2YJhIEukdOGba7Xd0N_XleKK8Y9WmztBK2C8,2436
39
+ modulitiz_micro/files/ModuloZip.py,sha256=JcCM1s37sa2P-HDsYrELVSMlnhkSY4aOOhWFa80D7Z0,1317
40
+ modulitiz_micro/files/cache/CacheBean.py,sha256=sYnJDPUaQJNln7yQnPb2bAapOULhpfEN0S-7BpV_Plc,128
41
+ modulitiz_micro/files/cache/CacheRam.py,sha256=S05YkHkfV-l3WGaoHWLktaEZklrC01GVA2r89U7a35E,961
42
+ modulitiz_micro/files/cache/DatabaseCache.py,sha256=FDunWGqCRjkaYKPbA3ZF7VJNuFRVB-wftkkqBc04XD4,2303
43
+ modulitiz_micro/files/cache/decorators/cacheRam.py,sha256=X-7JzB6n0yE9oviICYBoKXrxn8KDMy1B_snKR0CMFCk,744
44
+ modulitiz_micro/files/git/ModuloGit.py,sha256=LrNILr2BcXlzH3hwbNf5yR0ubQon3QiUHN9fLswQKY4,368
45
+ modulitiz_micro/gestionedom/GestioneDom.py,sha256=SwLeXd6VVpBPqIQoeNWM8GpU6m3AnpGx-d6xuGvQOnQ,1306
46
+ modulitiz_micro/init/AbstractBasicInit.py,sha256=D0rRDzbft5kXRAI5wsz12BPOvJjQXKRkrebbtVkCqD0,555
47
+ modulitiz_micro/init/AbstractInit.py,sha256=HAtiyLDU-ocIQR9Lud-wbbUKPaBVrcbWtbTUmnNVNDU,217
48
+ modulitiz_micro/keylogger/EccezioneKeyLogger.py,sha256=L5gkTtkAlgHheYaMeKAITvxXy1bnKk9FrB0cLqHa4m4,205
49
+ modulitiz_micro/keylogger/ModuloKeylogger.py,sha256=DZaxZ92Oe_ISA1MNCz4MHJv0iSb-ZgLt-IaOjlZ1rD8,1866
50
+ modulitiz_micro/multithreading/ModuloThread.py,sha256=IwIuOx3CREuPffxruI1l-tWE4pvgheXxy2Fea3KtV4c,962
51
+ modulitiz_micro/multithreading/ModuloThreadLogger.py,sha256=WhIe0DxzVUiByt4aGpsBFEPpWBlyElZt9Ga-ddnX7Ss,358
52
+ modulitiz_micro/multithreading/ModuloThreadWithCallbackError.py,sha256=C8juxxBN3xwUgax-cG2Rs2n_2GkNfELuorrTkKHjJW0,699
53
+ modulitiz_micro/nlp/ModuloNlp.py,sha256=2cJrGJE29XQPlk7eFcRg66xzUzXppzsGfTzZuVnaZrQ,763
54
+ modulitiz_micro/nlp/ModuloNlpDateAndTime.py,sha256=T_QS-QgvbJpAHQfM2cuPoHAV5QCVGsk4116XSPGJFZ0,1792
55
+ modulitiz_micro/rete/ModuloEmail.py,sha256=tor3xa9MiwUDncJXVuwb2TUvhKIm_v-FWH1Oyh-R8ps,2230
56
+ modulitiz_micro/rete/ModuloNetworking.py,sha256=4lX7pAHr1vQVl438qeLFcAMdKGscdgPqt2JYPPocLTQ,1878
57
+ modulitiz_micro/rete/ModuloOpenVpn.py,sha256=p0v1r0n13IowXqWxAk3Bj8OZmPodf59UC_SIC7TucQ4,612
58
+ modulitiz_micro/rete/http/ModuloHttp.py,sha256=_sQ_3RV2KxM1brQSnwZZE5UpA3mtqdiry2b00J7Sw8s,4358
59
+ modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py,sha256=Ne19tLgZ1J7u7lyV_IGogdSLdIkMsoyNS_CE-_shndc,2845
60
+ modulitiz_micro/rete/http/ModuloHttpUtils.py,sha256=5L1tsepNU4Gn-z6_Oc2Xt7nf8nAYvRUWbmszY3DgiaM,2225
61
+ modulitiz_micro/rete/http/beans/HttpResponseBean.py,sha256=NZroTA-n3PofxK-gb_WqqXJQpFbcyj9qpxkauKsWaFc,197
62
+ modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py,sha256=HcTroELbAcQvJW1RJdahMK6LRHk3fpgQTusCtWzheOE,573
63
+ modulitiz_micro/rete/ntp/AbstractModuloNtp.py,sha256=iaQkwWh4zq0q1yQlFEN4s4lOV1xKi-Xn4w7W4Kj405g,2767
64
+ modulitiz_micro/rete/ntp/ModuloNtpIt.py,sha256=GD5DjouuoV4xeltgSOYNcqcCbrTqzvmr-9EXs4BBGmU,224
65
+ modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py,sha256=4B2QxAu1oOxjHpWjSuvemvq6EN_1nDMP4gtSU7HFsyw,1215
66
+ modulitiz_micro/rete/socketserver/AbstractSocketServer.py,sha256=MVNXjBIBZ4CXS3Gk0z_nXKVzI7KzweHtZJtz2Z6Q1rY,8964
67
+ modulitiz_micro/rete/ssl/ModuloSsl.py,sha256=rMHUsHan0E11Rvto3rXxyG_HoVG6FgVrXehiAZzu9io,1945
68
+ modulitiz_micro/sistema/EnvVarsEnum.py,sha256=Zj1GjjyGTsh_lNSaf0n1ypjGqj-LAI4oO74L8ql7j20,152
69
+ modulitiz_micro/sistema/ModuloEnvVars.py,sha256=5yaX25JjOsWX-QM9clUyfTI7loZIW2p9ScYr4YFY12Q,820
70
+ modulitiz_micro/sistema/ModuloSystem.py,sha256=3yfh23SA6BrU9ND_nTN0j8i2dBAVIgA5hJ8HuxtzDCI,8226
71
+ modulitiz_micro/sistema/ModuloSystemPipe.py,sha256=reCTylwW2P0GZbHvw6skvCyfHqedezf3j7p8IamKuqI,1816
72
+ modulitiz_micro/social/telegram/ModuloTelegram.py,sha256=hNgq5juIF533MccCljIEF_N315Rko-i2zgQzQLUWVVM,1660
73
+ modulitiz_micro/social/telegram/ModuloTelegramSimple.py,sha256=A5hcDDgXFIXxLPCyEaIvJRsHrU3XxlxtLM3_FrCWcho,888
74
+ modulitiz_micro/util/beans/conf/AbstractBasicConfBean.py,sha256=19ZBoMU9DZ6hZDhS4WWL6DWIZuHZl-yNH3ctgXH4w0A,394
75
+ modulitiz_micro/util/beans/conf/AbstractConfBean.py,sha256=S44qVeGx52bfTwARkP1wSpho_3F5ePxIsGUFtIL0dqA,672
76
+ modulitiz_micro/util/beans/fileconf/AbstractBasicFileConfBean.py,sha256=y7Bu8_jiWsXGHFJL_-N2eyuwXdvlXFl2YYf3IADgVfU,412
77
+ modulitiz_micro/util/beans/fileconf/AbstractFileConfBean.py,sha256=LXJMq-XlLk3h__vSIrXxkxdxnwASpUi4cGi8gqOqaHw,350
78
+ modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py,sha256=gR6aY5OzcIJ5RqpPLg-PSlAJaLrvAJbymcVLEdkbauw,496
79
+ modulitiz_micro/util/beans/globalvar/AbstractGlobalVarBean.py,sha256=kOQ6ug9Mo338sGGcd08vts3RCAzp7arJp5-tc7sL8dQ,1338
80
+ modulitiz_micro/util/decorators/noAwait.py,sha256=X9gO5F-_yMiAtL8eF3Ck1RjAcMdDk-RzszlpdaGNcEA,513
81
+ modulitiz_micro/util/pip/AbstractModuloPip.py,sha256=LgpsF7TDHGZ2g21w6g0TaV_Uj62F5zYkkxAFLaMWOPw,1207
82
+ modulitiz_micro/util/pip/ModuloPip.py,sha256=zTWh-FyGukbqXKs1WQtw-QnkfAgvy3BjoiIa3wuAH10,1938
83
+ modulitiz_micro/util/scheduler/AbstractScheduler.py,sha256=txLpNJOCrifVrsD0Je4JlSirEf7j-kO46i96nGgpg54,636
84
+ modulitiz_micro/util/spooler/AbstractSpooler.py,sha256=z0hfP-ruhOD-9uOlmpwmrhpWdZwv8IFtwgrtb0XNfPs,281
85
+ modulitiz_micro/util/spooler/Spooler.py,sha256=dkG3IZPG_A71D7a7V5AcUydaqK_9u5CUQdrzsXuM1e0,412
86
+ modulitiz_micro/util/spooler/beans/QueueBean.py,sha256=XBbgh03mtcjkiASOR_Hwm2yS22LmDrJNXJoHG5Jpk64,142
87
+ modulitiz_micro/util/spooler/decorators/spooler.py,sha256=wLYlVXeCbDQ62yT7Mq1ylEv0X0ZSqCz3E0RKUGp5kHw,1809
88
+ modulitiz_micro/util/spooler/eccezioni/EccezioneSpooler.py,sha256=zlDA5hCtF9w8iqxnxK86ZWeD71_wiesErK8KR_Bbzeg,162
89
+ modulitiz_micro/util/spooler/eccezioni/EccezioneSpoolerFull.py,sha256=K8mRD4ZFWijzTdSkD5xLi4tVzpnvTd_nPj5jAfdY-e0,192
90
+ modulitiz_micro/util/unittesting/AbstractOverrideTestUtil.py,sha256=s7vNJAumP2wLk2nG-qUQhyBQ-pE-moDndwdo6j9okBY,301
91
+ modulitiz_micro/util/unittesting/AbstractTestUtil.py,sha256=CGca5Ow0c7_sX0LSmQ_jhhXHAs4Mmy335Ax605kxqpc,286
92
+ modulitiz_micro/util/unittesting/ModuloRunUnitTest.py,sha256=8sFblZyRSDGmf2fQqYCchwgsn0wySzoz8ilx4-3OIvM,749
93
+ modulitiz_micro/util/wheel/ModuloBuildWheel.py,sha256=tiTS4-tdKgd6zlXjXanjHYK5lPWPofIrlfAx5NDfd_I,4766
94
+ modulitiz_micro/util/wheel/ModuloToml.py,sha256=SpefiCBZxk1aWQk_NppTohq6_YPNthdNJ9FyDHY1Vms,1165
95
+ modulitiz_micro/util/wheel/ModuloWheel.py,sha256=yX-jk01-w9ibVwZfPkP1IngJbebYAoZfW6PQ2UA88Ck,326
96
+ modulitiz_micro-2.26.0.dist-info/LICENSE,sha256=vKUA7w9jf8zzsgxwXkljKHPYZ1ohoBtqbRyEYDmTp9A,1064
97
+ modulitiz_micro-2.26.0.dist-info/METADATA,sha256=Jzn5D8HnwfoQgaMJKJhQfF2yWl9P9cv0s6YHh37t2Fs,1549
98
+ modulitiz_micro-2.26.0.dist-info/WHEEL,sha256=2aRSX09k7pmd4gPs96VOQ860h0v0t30ka6JGHtpC3BY,94
99
+ modulitiz_micro-2.26.0.dist-info/top_level.txt,sha256=ESJE0qtNJp3tbKPrffbFVjH511NSjJHxscfpdLjTpA8,16
100
+ modulitiz_micro-2.26.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.45.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py311-none-any
5
+
@@ -0,0 +1 @@
1
+ modulitiz_micro