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.
- modulitiz_micro/ModuloBase64.py +61 -0
- modulitiz_micro/ModuloColorText.py +35 -0
- modulitiz_micro/ModuloDate.py +295 -0
- modulitiz_micro/ModuloFunzioni.py +58 -0
- modulitiz_micro/ModuloListe.py +150 -0
- modulitiz_micro/ModuloMeteo.py +72 -0
- modulitiz_micro/ModuloNumeri.py +130 -0
- modulitiz_micro/ModuloPyinstaller.py +29 -0
- modulitiz_micro/ModuloSeriale.py +61 -0
- modulitiz_micro/ModuloStatistiche.py +31 -0
- modulitiz_micro/ModuloStringhe.py +180 -0
- modulitiz_micro/ModuloTarghe.py +46 -0
- modulitiz_micro/android/ModuloAndroid.py +18 -0
- modulitiz_micro/android/ModuloAndroidAdb.py +48 -0
- modulitiz_micro/android/ModuloAndroidSim.py +130 -0
- modulitiz_micro/android/beans/SmsBean.py +12 -0
- modulitiz_micro/android/enums/AndroidSmsTypeEnum.py +17 -0
- modulitiz_micro/database/AbstractDatabaseService.py +13 -0
- modulitiz_micro/database/AbstractSql.py +49 -0
- modulitiz_micro/database/ModuloSqlOracle.py +19 -0
- modulitiz_micro/database/ModuloSqlServer.py +50 -0
- modulitiz_micro/database/eccezioni/EccezioneDbNoData.py +6 -0
- modulitiz_micro/database/mysql/AbstractBasicMysql.py +114 -0
- modulitiz_micro/database/mysql/ModuloMysql.py +151 -0
- modulitiz_micro/database/mysql/MysqlCommonConverter.py +47 -0
- modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py +6 -0
- modulitiz_micro/database/sqlite/AbstractBasicSQLite.py +114 -0
- modulitiz_micro/database/sqlite/ModuloSQLite.py +82 -0
- modulitiz_micro/eccezioni/EccezioneBase.py +7 -0
- modulitiz_micro/eccezioni/EccezioneCtrlC.py +7 -0
- modulitiz_micro/eccezioni/EccezioneRuntime.py +7 -0
- modulitiz_micro/eccezioni/EccezioneScheduler.py +7 -0
- modulitiz_micro/eccezioni/EccezioneSoNonSupportato.py +7 -0
- modulitiz_micro/eccezioni/http/EccezioneHttp.py +8 -0
- modulitiz_micro/eccezioni/http/EccezioneHttp404.py +7 -0
- modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py +7 -0
- modulitiz_micro/files/ModuloFiles.py +173 -0
- modulitiz_micro/files/ModuloLogging.py +69 -0
- modulitiz_micro/files/ModuloZip.py +42 -0
- modulitiz_micro/files/cache/CacheBean.py +5 -0
- modulitiz_micro/files/cache/CacheRam.py +29 -0
- modulitiz_micro/files/cache/DatabaseCache.py +91 -0
- modulitiz_micro/files/cache/decorators/cacheRam.py +26 -0
- modulitiz_micro/files/git/ModuloGit.py +15 -0
- modulitiz_micro/gestionedom/GestioneDom.py +44 -0
- modulitiz_micro/init/AbstractBasicInit.py +27 -0
- modulitiz_micro/init/AbstractInit.py +11 -0
- modulitiz_micro/keylogger/EccezioneKeyLogger.py +7 -0
- modulitiz_micro/keylogger/ModuloKeylogger.py +73 -0
- modulitiz_micro/multithreading/ModuloThread.py +26 -0
- modulitiz_micro/multithreading/ModuloThreadLogger.py +8 -0
- modulitiz_micro/multithreading/ModuloThreadWithCallbackError.py +25 -0
- modulitiz_micro/nlp/ModuloNlp.py +36 -0
- modulitiz_micro/nlp/ModuloNlpDateAndTime.py +59 -0
- modulitiz_micro/rete/ModuloEmail.py +69 -0
- modulitiz_micro/rete/ModuloNetworking.py +64 -0
- modulitiz_micro/rete/ModuloOpenVpn.py +15 -0
- modulitiz_micro/rete/http/ModuloHttp.py +114 -0
- modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py +91 -0
- modulitiz_micro/rete/http/ModuloHttpUtils.py +66 -0
- modulitiz_micro/rete/http/beans/HttpResponseBean.py +5 -0
- modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py +22 -0
- modulitiz_micro/rete/ntp/AbstractModuloNtp.py +73 -0
- modulitiz_micro/rete/ntp/ModuloNtpIt.py +8 -0
- modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py +35 -0
- modulitiz_micro/rete/socketserver/AbstractSocketServer.py +267 -0
- modulitiz_micro/rete/ssl/ModuloSsl.py +56 -0
- modulitiz_micro/sistema/EnvVarsEnum.py +9 -0
- modulitiz_micro/sistema/ModuloEnvVars.py +34 -0
- modulitiz_micro/sistema/ModuloSystem.py +298 -0
- modulitiz_micro/sistema/ModuloSystemPipe.py +67 -0
- modulitiz_micro/social/telegram/ModuloTelegram.py +52 -0
- modulitiz_micro/social/telegram/ModuloTelegramSimple.py +26 -0
- modulitiz_micro/util/beans/conf/AbstractBasicConfBean.py +11 -0
- modulitiz_micro/util/beans/conf/AbstractConfBean.py +16 -0
- modulitiz_micro/util/beans/fileconf/AbstractBasicFileConfBean.py +11 -0
- modulitiz_micro/util/beans/fileconf/AbstractFileConfBean.py +13 -0
- modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py +15 -0
- modulitiz_micro/util/beans/globalvar/AbstractGlobalVarBean.py +34 -0
- modulitiz_micro/util/decorators/noAwait.py +23 -0
- modulitiz_micro/util/pip/AbstractModuloPip.py +41 -0
- modulitiz_micro/util/pip/ModuloPip.py +49 -0
- modulitiz_micro/util/scheduler/AbstractScheduler.py +32 -0
- modulitiz_micro/util/spooler/AbstractSpooler.py +14 -0
- modulitiz_micro/util/spooler/Spooler.py +18 -0
- modulitiz_micro/util/spooler/beans/QueueBean.py +8 -0
- modulitiz_micro/util/spooler/decorators/spooler.py +49 -0
- modulitiz_micro/util/spooler/eccezioni/EccezioneSpooler.py +7 -0
- modulitiz_micro/util/spooler/eccezioni/EccezioneSpoolerFull.py +7 -0
- modulitiz_micro/util/unittesting/AbstractOverrideTestUtil.py +18 -0
- modulitiz_micro/util/unittesting/AbstractTestUtil.py +11 -0
- modulitiz_micro/util/unittesting/ModuloRunUnitTest.py +25 -0
- modulitiz_micro/util/wheel/ModuloBuildWheel.py +118 -0
- modulitiz_micro/util/wheel/ModuloToml.py +40 -0
- modulitiz_micro/util/wheel/ModuloWheel.py +12 -0
- modulitiz_micro-2.26.0.dist-info/LICENSE +21 -0
- modulitiz_micro-2.26.0.dist-info/METADATA +63 -0
- modulitiz_micro-2.26.0.dist-info/RECORD +100 -0
- modulitiz_micro-2.26.0.dist-info/WHEEL +5 -0
- 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,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,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 @@
|
|
1
|
+
modulitiz_micro
|