modulitiz-micro 2.30.0__py311-none-any.whl → 2.32.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 -61
- modulitiz_micro/ModuloColorText.py +35 -35
- modulitiz_micro/ModuloDate.py +295 -295
- modulitiz_micro/ModuloFunzioni.py +70 -58
- modulitiz_micro/ModuloListe.py +150 -150
- modulitiz_micro/ModuloMeteo.py +72 -72
- modulitiz_micro/ModuloNumeri.py +130 -130
- modulitiz_micro/ModuloPyinstaller.py +29 -29
- modulitiz_micro/ModuloSeriale.py +61 -61
- modulitiz_micro/ModuloStatistiche.py +31 -31
- modulitiz_micro/ModuloStringhe.py +180 -180
- modulitiz_micro/ModuloTarghe.py +46 -46
- modulitiz_micro/android/ModuloAndroid.py +18 -18
- modulitiz_micro/android/ModuloAndroidAdb.py +48 -48
- modulitiz_micro/android/ModuloAndroidSim.py +130 -130
- modulitiz_micro/android/beans/SmsBean.py +12 -12
- modulitiz_micro/android/enums/AndroidSmsTypeEnum.py +17 -17
- modulitiz_micro/database/AbstractDatabaseService.py +13 -13
- modulitiz_micro/database/AbstractSql.py +69 -69
- modulitiz_micro/database/ModuloSqlOracle.py +19 -19
- modulitiz_micro/database/ModuloSqlServer.py +43 -43
- modulitiz_micro/database/eccezioni/EccezioneDbNoData.py +6 -6
- modulitiz_micro/database/mysql/AbstractBasicMysql.py +114 -114
- modulitiz_micro/database/mysql/ModuloMysql.py +163 -163
- modulitiz_micro/database/mysql/MysqlCommonConverter.py +47 -47
- modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py +6 -6
- modulitiz_micro/database/sqlite/AbstractBasicSQLite.py +114 -114
- modulitiz_micro/database/sqlite/ModuloSQLite.py +82 -82
- modulitiz_micro/eccezioni/EccezioneBase.py +7 -7
- modulitiz_micro/eccezioni/EccezioneCtrlC.py +7 -7
- modulitiz_micro/eccezioni/EccezioneRuntime.py +7 -7
- modulitiz_micro/eccezioni/EccezioneScheduler.py +7 -7
- modulitiz_micro/eccezioni/EccezioneSoNonSupportato.py +7 -7
- modulitiz_micro/eccezioni/http/EccezioneHttp.py +8 -8
- modulitiz_micro/eccezioni/http/EccezioneHttp404.py +7 -7
- modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py +7 -7
- modulitiz_micro/files/ModuloFiles.py +173 -173
- modulitiz_micro/files/ModuloLogging.py +69 -69
- modulitiz_micro/files/ModuloZip.py +42 -42
- modulitiz_micro/files/cache/CacheBean.py +5 -5
- modulitiz_micro/files/cache/CacheRam.py +29 -29
- modulitiz_micro/files/cache/DatabaseCache.py +91 -91
- modulitiz_micro/files/cache/decorators/cacheRam.py +26 -26
- modulitiz_micro/files/git/ModuloGit.py +20 -20
- modulitiz_micro/files/git/decorators/catchAndRaiseGitExceptions.py +19 -19
- modulitiz_micro/files/git/exceptions/EccezioneGit.py +7 -7
- modulitiz_micro/gestionedom/GestioneDom.py +44 -44
- modulitiz_micro/init/AbstractBasicInit.py +27 -27
- modulitiz_micro/init/AbstractInit.py +11 -11
- modulitiz_micro/keylogger/EccezioneKeyLogger.py +7 -7
- modulitiz_micro/keylogger/ModuloKeylogger.py +73 -73
- modulitiz_micro/{multithreading → multithread}/ModuloThread.py +26 -26
- modulitiz_micro/{multithreading → multithread}/ModuloThreadLogger.py +8 -8
- modulitiz_micro/{multithreading → multithread}/ModuloThreadWithCallbackError.py +25 -25
- modulitiz_micro/nlp/ModuloNlp.py +36 -36
- modulitiz_micro/nlp/ModuloNlpDateAndTime.py +59 -59
- modulitiz_micro/rete/ModuloNetworking.py +67 -64
- modulitiz_micro/rete/ModuloOpenVpn.py +15 -15
- modulitiz_micro/rete/email/EmailBean.py +5 -5
- modulitiz_micro/rete/email/ModuloEmail.py +90 -90
- modulitiz_micro/rete/http/ModuloHttp.py +115 -114
- modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py +91 -91
- modulitiz_micro/rete/http/ModuloHttpUtils.py +69 -66
- modulitiz_micro/rete/http/beans/HttpResponseBean.py +5 -5
- modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py +22 -22
- modulitiz_micro/rete/ntp/AbstractModuloNtp.py +73 -73
- modulitiz_micro/rete/ntp/ModuloNtpIt.py +8 -8
- modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py +35 -35
- modulitiz_micro/rete/socketserver/AbstractSocketServer.py +267 -267
- modulitiz_micro/rete/ssl/ModuloSsl.py +56 -56
- modulitiz_micro/sistema/EnvVarsEnum.py +9 -9
- modulitiz_micro/sistema/ModuloEnvVars.py +34 -34
- modulitiz_micro/sistema/ModuloSystem.py +298 -298
- modulitiz_micro/sistema/ModuloSystemPipe.py +67 -67
- modulitiz_micro/social/telegram/ModuloTelegram.py +52 -52
- modulitiz_micro/social/telegram/ModuloTelegramSimple.py +26 -26
- modulitiz_micro/util/beans/conf/AbstractBasicConfBean.py +11 -11
- modulitiz_micro/util/beans/conf/AbstractConfBean.py +16 -16
- modulitiz_micro/util/beans/fileconf/AbstractBasicFileConfBean.py +11 -11
- modulitiz_micro/util/beans/fileconf/AbstractFileConfBean.py +13 -13
- modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py +15 -15
- modulitiz_micro/util/beans/globalvar/AbstractGlobalVarBean.py +34 -34
- modulitiz_micro/util/decorators/noAwait.py +23 -23
- modulitiz_micro/util/pip/AbstractModuloPip.py +41 -41
- modulitiz_micro/util/pip/ModuloPip.py +49 -49
- modulitiz_micro/util/scheduler/AbstractScheduler.py +32 -32
- modulitiz_micro/util/spooler/AbstractSpooler.py +14 -14
- modulitiz_micro/util/spooler/Spooler.py +18 -18
- modulitiz_micro/util/spooler/beans/QueueBean.py +8 -8
- modulitiz_micro/util/spooler/decorators/spooler.py +49 -49
- modulitiz_micro/util/spooler/eccezioni/EccezioneSpooler.py +7 -7
- modulitiz_micro/util/spooler/eccezioni/EccezioneSpoolerFull.py +7 -7
- modulitiz_micro/util/unittesting/AbstractOverrideTestUtil.py +31 -31
- modulitiz_micro/util/unittesting/AbstractTestUtil.py +11 -11
- modulitiz_micro/util/unittesting/ModuloRunUnitTest.py +25 -25
- modulitiz_micro/util/wheel/ModuloBuildWheel.py +131 -121
- modulitiz_micro/util/wheel/ModuloCheckTestNamingConvention.py +86 -0
- modulitiz_micro/util/wheel/ModuloToml.py +40 -40
- modulitiz_micro/util/wheel/ModuloWheel.py +12 -12
- {modulitiz_micro-2.30.0.dist-info → modulitiz_micro-2.32.0.dist-info}/LICENSE +21 -21
- {modulitiz_micro-2.30.0.dist-info → modulitiz_micro-2.32.0.dist-info}/METADATA +64 -64
- modulitiz_micro-2.32.0.dist-info/RECORD +104 -0
- modulitiz_micro-2.30.0.dist-info/RECORD +0 -103
- {modulitiz_micro-2.30.0.dist-info → modulitiz_micro-2.32.0.dist-info}/WHEEL +0 -0
- {modulitiz_micro-2.30.0.dist-info → modulitiz_micro-2.32.0.dist-info}/top_level.txt +0 -0
@@ -1,121 +1,131 @@
|
|
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.
|
9
|
-
from modulitiz_micro.
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
self.
|
20
|
-
|
21
|
-
|
22
|
-
self.
|
23
|
-
self.
|
24
|
-
self.
|
25
|
-
|
26
|
-
|
27
|
-
self.
|
28
|
-
self.
|
29
|
-
self.
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
#
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
============================================================
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
#
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
#
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
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.ModuloCheckTestNamingConvention import ModuloCheckTestNamingConvention
|
9
|
+
from modulitiz_micro.util.wheel.ModuloToml import ModuloToml
|
10
|
+
from modulitiz_micro.files.git.ModuloGit import ModuloGit
|
11
|
+
|
12
|
+
|
13
|
+
class ModuloBuildWheel(object):
|
14
|
+
CMD_PYTHON="python"
|
15
|
+
PATTERN_NOMEFILE_WHEEL="{}-{}-{}-none-any.whl"
|
16
|
+
MAX_VERSION_TO_KEEP=10
|
17
|
+
|
18
|
+
def __init__(self,moduleName:str,percorsoFileMain:str):
|
19
|
+
self.moduleName=moduleName
|
20
|
+
self.moduleNameNormalized=moduleName.replace("_","-")
|
21
|
+
|
22
|
+
self.percorsoCartellaSource=os.path.dirname(percorsoFileMain)
|
23
|
+
self.percorsoCartellaRoot=os.path.dirname(self.percorsoCartellaSource)
|
24
|
+
self.git=ModuloGit(os.path.dirname(self.percorsoCartellaRoot))
|
25
|
+
self.skipUnitTest=False
|
26
|
+
|
27
|
+
self.moduloToml=ModuloToml("pyproject.toml")
|
28
|
+
self.moduloTestNamingConventions=ModuloCheckTestNamingConvention(moduleName,self.percorsoCartellaSource)
|
29
|
+
self.versionOld=None
|
30
|
+
self.versionNew=None
|
31
|
+
self.filenameWheel=None
|
32
|
+
|
33
|
+
def doWork(self):
|
34
|
+
self.versionOld=self.moduloToml.retrieveVersion()
|
35
|
+
self.skipUnitTest=input("Skip unit test? y, n (default = n):")=='y'
|
36
|
+
# chiedo quale versione aumentare (major, minor, bug fix)
|
37
|
+
versionType=input("Which version increment? 1=major, 2=minor, 3=bug fix (default = 2):")
|
38
|
+
if versionType=="":
|
39
|
+
versionType=2
|
40
|
+
else:
|
41
|
+
versionType=int(versionType)
|
42
|
+
# calcolo la prossima versione
|
43
|
+
self.__computeVersionNew(versionType)
|
44
|
+
# stampo info
|
45
|
+
msg=f"Build {self.moduleName} {self.versionNew}"
|
46
|
+
ModuloSystem.setTitoloFinestra(msg)
|
47
|
+
print("""{}
|
48
|
+
============================================================
|
49
|
+
{} (from version {})
|
50
|
+
============================================================
|
51
|
+
{}""".format(ModuloColorText.GRASSETTO,msg,self.versionOld,ModuloColorText.DEFAULT))
|
52
|
+
# cambio cartella
|
53
|
+
os.chdir(self.percorsoCartellaSource)
|
54
|
+
if self.__doUnitTests() is True:
|
55
|
+
return
|
56
|
+
# aggiorno versione
|
57
|
+
self.moduloToml.updateVersion(self.versionNew)
|
58
|
+
# costruisco wheel
|
59
|
+
ModuloSystem.systemCallPrintOutput(f'{self.CMD_PYTHON} -m pip install -U build twine==6.0.1',None)
|
60
|
+
print()
|
61
|
+
percorsoCartellaOut=os.path.dirname(self.percorsoCartellaRoot)
|
62
|
+
percorsoCartellaOut=ModuloFiles.pathJoin(ModuloFiles.pathJoin(percorsoCartellaOut,"wheels"),self.moduleNameNormalized)
|
63
|
+
cmd='{} -m build --wheel --outdir "{}"'.format(self.CMD_PYTHON,percorsoCartellaOut)
|
64
|
+
ModuloSystem.systemCallPrintOutput(cmd,None)
|
65
|
+
print()
|
66
|
+
# cancello cartelle temporanee
|
67
|
+
shutil.rmtree(ModuloFiles.pathJoin(self.percorsoCartellaSource,"build"))
|
68
|
+
shutil.rmtree(ModuloFiles.pathJoin(self.percorsoCartellaSource,self.moduleName+".egg-info"))
|
69
|
+
# installo wheel
|
70
|
+
self.filenameWheel=self.PATTERN_NOMEFILE_WHEEL.format(self.moduleName,self.versionNew,self.moduloToml.retrieveMinPyVersion())
|
71
|
+
percorsoWheel=ModuloFiles.pathJoin(percorsoCartellaOut,self.filenameWheel)
|
72
|
+
cmd='{} -m pip install -U "{}"'.format(self.CMD_PYTHON,percorsoWheel)
|
73
|
+
ModuloSystem.systemCallPrintOutput(cmd,None)
|
74
|
+
print()
|
75
|
+
# aggiungo il file al repo
|
76
|
+
self.git.inner.index.add(percorsoWheel)
|
77
|
+
# se presenti, cancello le versioni troppo vecchie
|
78
|
+
print()
|
79
|
+
oldFilenames=ModuloListe.humanOrder(os.listdir(percorsoCartellaOut))[:-self.MAX_VERSION_TO_KEEP]
|
80
|
+
if len(oldFilenames)==0:
|
81
|
+
return
|
82
|
+
print("Cancello le versioni troppo vecchie:")
|
83
|
+
for file in oldFilenames:
|
84
|
+
deletedFilename=self.git.inner.index.remove(ModuloFiles.pathJoin(percorsoCartellaOut,file),working_tree=True)
|
85
|
+
print("\n".join(deletedFilename))
|
86
|
+
print("Uploading to Pypi")
|
87
|
+
cmd='{} -m twine upload "{}"'.format(self.CMD_PYTHON,percorsoWheel)
|
88
|
+
ModuloSystem.systemCallPrintOutput(cmd,None)
|
89
|
+
|
90
|
+
def __doUnitTests(self) -> bool:
|
91
|
+
if self.skipUnitTest is True:
|
92
|
+
return False
|
93
|
+
nomefileTest=ModuloFiles.pathJoin(self.percorsoCartellaSource,"test/TestMain.py")
|
94
|
+
print("Check file and class naming conventions...")
|
95
|
+
errors=self.moduloTestNamingConventions.doWork()
|
96
|
+
if not ModuloListe.isEmpty(errors):
|
97
|
+
errorsCount=len(errors)
|
98
|
+
print("There %s %d error%s:"%("are" if errorsCount>1 else "is",errorsCount,"s" if errorsCount>1 else ""))
|
99
|
+
for error in errors:
|
100
|
+
print(error)
|
101
|
+
return True
|
102
|
+
print("Starting tests...")
|
103
|
+
cmd='%s "%s"'%(self.CMD_PYTHON,nomefileTest)
|
104
|
+
rows=[]
|
105
|
+
for row in ModuloSystem.systemCallYieldOutput(cmd,None):
|
106
|
+
print("%s>>>%s %s"%(ModuloColorText.BLU,ModuloColorText.DEFAULT,row))
|
107
|
+
rows.append(row)
|
108
|
+
rows=reversed(rows[-10:])
|
109
|
+
rows=[x.strip() for x in rows]
|
110
|
+
rows=[x if x!="" and x!=ModuloColorText.DEFAULT else None for x in rows]
|
111
|
+
rows=ModuloListe.eliminaElementiVuoti(rows)
|
112
|
+
lastRow=rows[0]
|
113
|
+
PATTERN_TO_PRINT="""{}
|
114
|
+
==================================================
|
115
|
+
{}
|
116
|
+
==================================================
|
117
|
+
"""+ModuloColorText.DEFAULT
|
118
|
+
if lastRow!="OK":
|
119
|
+
print(PATTERN_TO_PRINT.format(ModuloColorText.ROSSO,"ERRORE nei test"))
|
120
|
+
return True
|
121
|
+
print(PATTERN_TO_PRINT.format(ModuloColorText.VERDE,"test completati con successo"))
|
122
|
+
return False
|
123
|
+
|
124
|
+
def __computeVersionNew(self,versionType:int):
|
125
|
+
arr=[int(x) for x in self.versionOld.split(".")]
|
126
|
+
arr[versionType-1]+=1
|
127
|
+
if versionType!=len(arr):
|
128
|
+
for i in range(versionType,len(arr)):
|
129
|
+
arr[i]=0
|
130
|
+
arr=[str(x) for x in arr]
|
131
|
+
self.versionNew=".".join(arr)
|
@@ -0,0 +1,86 @@
|
|
1
|
+
import os.path
|
2
|
+
import re
|
3
|
+
|
4
|
+
from modulitiz_micro.ModuloStringhe import ModuloStringhe
|
5
|
+
|
6
|
+
from modulitiz_micro.ModuloFunzioni import ModuloFunzioni
|
7
|
+
from modulitiz_micro.ModuloListe import ModuloListe
|
8
|
+
from modulitiz_micro.files.ModuloFiles import ModuloFiles
|
9
|
+
|
10
|
+
|
11
|
+
class ModuloCheckTestNamingConvention(object):
|
12
|
+
"""
|
13
|
+
Checks if naming convention of test classes matches real source classes.
|
14
|
+
"""
|
15
|
+
EXCLUDE_DIRS=("testutil",)
|
16
|
+
EXCLUDE_FILES=("TestMain.py",)
|
17
|
+
|
18
|
+
def __init__(self,moduleName:str,pathSource:str):
|
19
|
+
self.moduleName=moduleName
|
20
|
+
self.moduleNameNormalizzato=moduleName.replace("_","-")
|
21
|
+
self.pathSource=ModuloFiles.pathJoin(pathSource,moduleName)
|
22
|
+
self.pathTest=ModuloFiles.pathJoin(pathSource,"test")
|
23
|
+
self.errors=[]
|
24
|
+
self.__sourceFiles=[]
|
25
|
+
|
26
|
+
def doWork(self)->list[str]:
|
27
|
+
# check if paths exists
|
28
|
+
self.__checkPath(self.pathSource)
|
29
|
+
self.__checkPath(self.pathTest)
|
30
|
+
# cache source files
|
31
|
+
for rootRel,rootAbs,folders,filenames in ModuloFiles.walk(self.pathSource,(),self.EXCLUDE_DIRS,None,None):
|
32
|
+
self.__sourceFiles.extend([ModuloFiles.pathJoin(rootRel,x) for x in filenames])
|
33
|
+
self.__sourceFiles=[x for x in self.__sourceFiles if not ModuloStringhe.contains(x,"__pycache__")]
|
34
|
+
# check every test file
|
35
|
+
for rootRel,rootAbs,folders,filenames in ModuloFiles.walk(self.pathTest,self.EXCLUDE_FILES,self.EXCLUDE_DIRS,None,None):
|
36
|
+
if not rootRel.endswith("__pycache__"):
|
37
|
+
for filename in filenames:
|
38
|
+
self.__checkFile(rootRel,rootAbs,filename)
|
39
|
+
return self.errors
|
40
|
+
|
41
|
+
def __checkPath(self,path:str):
|
42
|
+
if os.path.exists(path):
|
43
|
+
return
|
44
|
+
self.errors.append("Path not exists: %s"%(path,))
|
45
|
+
|
46
|
+
def __checkFile(self,rootRel:str,rootAbs:str,filename:str):
|
47
|
+
filenameRel=ModuloFiles.pathJoin(rootRel,filename)
|
48
|
+
filenameAbs=ModuloFiles.pathJoin(rootAbs,filename)
|
49
|
+
isDecorator=ModuloStringhe.contains(rootRel,"decorators")
|
50
|
+
# file name convention
|
51
|
+
results=re.findall(r"[A-Z]\w+Test.py",filename)
|
52
|
+
if ModuloListe.isEmpty(results):
|
53
|
+
self.errors.append("File name not matching conventions: %s"%(filenameRel,))
|
54
|
+
return
|
55
|
+
# file name must match class name
|
56
|
+
testClasses=ModuloFunzioni.getClassesFromFileSource(filenameAbs)
|
57
|
+
if len(testClasses)>1:
|
58
|
+
self.errors.append("File must not contain more than 1 class: %s"%(filenameRel,))
|
59
|
+
return
|
60
|
+
baseFilename=ModuloFiles.getBaseFileNameAndExtension(filename)[0]
|
61
|
+
testClassName=None
|
62
|
+
if not isDecorator:
|
63
|
+
testClassName=testClasses[0]
|
64
|
+
if testClassName!=baseFilename:
|
65
|
+
self.errors.append("File and class names must be equals: %s"%(filenameRel,))
|
66
|
+
return
|
67
|
+
# test must follow source structure
|
68
|
+
sourceFilenameRel=self.__getSourceFileNameFromTestFileName(rootRel,baseFilename,isDecorator)
|
69
|
+
if sourceFilenameRel is None:
|
70
|
+
self.errors.append("File doesn't match source dirs structure: %s"%(filenameRel,))
|
71
|
+
return
|
72
|
+
# source class name must equals class test
|
73
|
+
if not isDecorator:
|
74
|
+
sourceClassName=ModuloFunzioni.getClassesFromFileSource(ModuloFiles.pathJoin(self.pathSource,sourceFilenameRel))[0]
|
75
|
+
if not testClassName.startswith(sourceClassName):
|
76
|
+
self.errors.append("Test class name doesn't match source class name: %s"%(filenameRel,))
|
77
|
+
|
78
|
+
def __getSourceFileNameFromTestFileName(self,rootRel:str,baseFilename:str,isDecorator:bool)-> str|None:
|
79
|
+
partIncremental=""
|
80
|
+
for part in re.findall(r'[A-Z](?:[a-z\d]+|[A-Z]*(?=[A-Z]|$))', baseFilename):
|
81
|
+
partIncremental+=part
|
82
|
+
partIncrementalToUse=partIncremental if not isDecorator else partIncremental[0].lower()+partIncremental[1:]
|
83
|
+
filePathRel=ModuloFiles.pathJoin(rootRel,partIncrementalToUse)+".py"
|
84
|
+
if filePathRel in self.__sourceFiles:
|
85
|
+
return filePathRel
|
86
|
+
return None
|
@@ -1,40 +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)
|
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)
|
@@ -1,12 +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__)
|
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__)
|
@@ -1,21 +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.
|
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.
|
@@ -1,64 +1,64 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: modulitiz_micro
|
3
|
-
Version: 2.
|
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
|
-
It's a Python library that contains daily use or generic functions.
|
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
|
40
|
-
```
|
41
|
-
The other required dependencies will be installed automatically.
|
42
|
-
|
43
|
-
## Usage
|
44
|
-
|
45
|
-
```python
|
46
|
-
from modulitiz_micro.ModuloStringhe import ModuloStringhe
|
47
|
-
|
48
|
-
# returns True
|
49
|
-
ModuloStringhe.isEmpty(None)
|
50
|
-
ModuloStringhe.isEmpty("")
|
51
|
-
|
52
|
-
# returns False
|
53
|
-
ModuloStringhe.isEmpty("a")
|
54
|
-
|
55
|
-
...
|
56
|
-
```
|
57
|
-
|
58
|
-
## Contributing
|
59
|
-
|
60
|
-
If you find any bug you can write me at [sderfo1234@altervista.org](mailto:sderfo1234@altervista.org)
|
61
|
-
|
62
|
-
## License
|
63
|
-
|
64
|
-
[MIT](https://choosealicense.com/licenses/mit/)
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: modulitiz_micro
|
3
|
+
Version: 2.32.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
|
+
It's a Python library that contains daily use or generic functions.
|
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
|
40
|
+
```
|
41
|
+
The other required dependencies will be installed automatically.
|
42
|
+
|
43
|
+
## Usage
|
44
|
+
|
45
|
+
```python
|
46
|
+
from modulitiz_micro.ModuloStringhe import ModuloStringhe
|
47
|
+
|
48
|
+
# returns True
|
49
|
+
ModuloStringhe.isEmpty(None)
|
50
|
+
ModuloStringhe.isEmpty("")
|
51
|
+
|
52
|
+
# returns False
|
53
|
+
ModuloStringhe.isEmpty("a")
|
54
|
+
|
55
|
+
...
|
56
|
+
```
|
57
|
+
|
58
|
+
## Contributing
|
59
|
+
|
60
|
+
If you find any bug you can write me at [sderfo1234@altervista.org](mailto:sderfo1234@altervista.org)
|
61
|
+
|
62
|
+
## License
|
63
|
+
|
64
|
+
[MIT](https://choosealicense.com/licenses/mit/)
|