modulitiz-micro 2.31.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.
Files changed (105) hide show
  1. modulitiz_micro/ModuloBase64.py +61 -61
  2. modulitiz_micro/ModuloColorText.py +35 -35
  3. modulitiz_micro/ModuloDate.py +295 -295
  4. modulitiz_micro/ModuloFunzioni.py +70 -58
  5. modulitiz_micro/ModuloListe.py +150 -150
  6. modulitiz_micro/ModuloMeteo.py +72 -72
  7. modulitiz_micro/ModuloNumeri.py +130 -130
  8. modulitiz_micro/ModuloPyinstaller.py +29 -29
  9. modulitiz_micro/ModuloSeriale.py +61 -61
  10. modulitiz_micro/ModuloStatistiche.py +31 -31
  11. modulitiz_micro/ModuloStringhe.py +180 -180
  12. modulitiz_micro/ModuloTarghe.py +46 -46
  13. modulitiz_micro/android/ModuloAndroid.py +18 -18
  14. modulitiz_micro/android/ModuloAndroidAdb.py +48 -48
  15. modulitiz_micro/android/ModuloAndroidSim.py +130 -130
  16. modulitiz_micro/android/beans/SmsBean.py +12 -12
  17. modulitiz_micro/android/enums/AndroidSmsTypeEnum.py +17 -17
  18. modulitiz_micro/database/AbstractDatabaseService.py +13 -13
  19. modulitiz_micro/database/AbstractSql.py +69 -69
  20. modulitiz_micro/database/ModuloSqlOracle.py +19 -19
  21. modulitiz_micro/database/ModuloSqlServer.py +43 -43
  22. modulitiz_micro/database/eccezioni/EccezioneDbNoData.py +6 -6
  23. modulitiz_micro/database/mysql/AbstractBasicMysql.py +114 -114
  24. modulitiz_micro/database/mysql/ModuloMysql.py +163 -163
  25. modulitiz_micro/database/mysql/MysqlCommonConverter.py +47 -47
  26. modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py +6 -6
  27. modulitiz_micro/database/sqlite/AbstractBasicSQLite.py +114 -114
  28. modulitiz_micro/database/sqlite/ModuloSQLite.py +82 -82
  29. modulitiz_micro/eccezioni/EccezioneBase.py +7 -7
  30. modulitiz_micro/eccezioni/EccezioneCtrlC.py +7 -7
  31. modulitiz_micro/eccezioni/EccezioneRuntime.py +7 -7
  32. modulitiz_micro/eccezioni/EccezioneScheduler.py +7 -7
  33. modulitiz_micro/eccezioni/EccezioneSoNonSupportato.py +7 -7
  34. modulitiz_micro/eccezioni/http/EccezioneHttp.py +8 -8
  35. modulitiz_micro/eccezioni/http/EccezioneHttp404.py +7 -7
  36. modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py +7 -7
  37. modulitiz_micro/files/ModuloFiles.py +173 -173
  38. modulitiz_micro/files/ModuloLogging.py +69 -69
  39. modulitiz_micro/files/ModuloZip.py +42 -42
  40. modulitiz_micro/files/cache/CacheBean.py +5 -5
  41. modulitiz_micro/files/cache/CacheRam.py +29 -29
  42. modulitiz_micro/files/cache/DatabaseCache.py +91 -91
  43. modulitiz_micro/files/cache/decorators/cacheRam.py +26 -26
  44. modulitiz_micro/files/git/ModuloGit.py +20 -20
  45. modulitiz_micro/files/git/decorators/catchAndRaiseGitExceptions.py +19 -19
  46. modulitiz_micro/files/git/exceptions/EccezioneGit.py +7 -7
  47. modulitiz_micro/gestionedom/GestioneDom.py +44 -44
  48. modulitiz_micro/init/AbstractBasicInit.py +27 -27
  49. modulitiz_micro/init/AbstractInit.py +11 -11
  50. modulitiz_micro/keylogger/EccezioneKeyLogger.py +7 -7
  51. modulitiz_micro/keylogger/ModuloKeylogger.py +73 -73
  52. modulitiz_micro/{multithreading → multithread}/ModuloThread.py +26 -26
  53. modulitiz_micro/{multithreading → multithread}/ModuloThreadLogger.py +8 -8
  54. modulitiz_micro/{multithreading → multithread}/ModuloThreadWithCallbackError.py +25 -25
  55. modulitiz_micro/nlp/ModuloNlp.py +36 -36
  56. modulitiz_micro/nlp/ModuloNlpDateAndTime.py +59 -59
  57. modulitiz_micro/rete/ModuloNetworking.py +67 -67
  58. modulitiz_micro/rete/ModuloOpenVpn.py +15 -15
  59. modulitiz_micro/rete/email/EmailBean.py +5 -5
  60. modulitiz_micro/rete/email/ModuloEmail.py +90 -90
  61. modulitiz_micro/rete/http/ModuloHttp.py +115 -115
  62. modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py +91 -91
  63. modulitiz_micro/rete/http/ModuloHttpUtils.py +69 -69
  64. modulitiz_micro/rete/http/beans/HttpResponseBean.py +5 -5
  65. modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py +22 -22
  66. modulitiz_micro/rete/ntp/AbstractModuloNtp.py +73 -73
  67. modulitiz_micro/rete/ntp/ModuloNtpIt.py +8 -8
  68. modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py +35 -35
  69. modulitiz_micro/rete/socketserver/AbstractSocketServer.py +267 -267
  70. modulitiz_micro/rete/ssl/ModuloSsl.py +56 -56
  71. modulitiz_micro/sistema/EnvVarsEnum.py +9 -9
  72. modulitiz_micro/sistema/ModuloEnvVars.py +34 -34
  73. modulitiz_micro/sistema/ModuloSystem.py +298 -298
  74. modulitiz_micro/sistema/ModuloSystemPipe.py +67 -67
  75. modulitiz_micro/social/telegram/ModuloTelegram.py +52 -52
  76. modulitiz_micro/social/telegram/ModuloTelegramSimple.py +26 -26
  77. modulitiz_micro/util/beans/conf/AbstractBasicConfBean.py +11 -11
  78. modulitiz_micro/util/beans/conf/AbstractConfBean.py +16 -16
  79. modulitiz_micro/util/beans/fileconf/AbstractBasicFileConfBean.py +11 -11
  80. modulitiz_micro/util/beans/fileconf/AbstractFileConfBean.py +13 -13
  81. modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py +15 -15
  82. modulitiz_micro/util/beans/globalvar/AbstractGlobalVarBean.py +34 -34
  83. modulitiz_micro/util/decorators/noAwait.py +23 -23
  84. modulitiz_micro/util/pip/AbstractModuloPip.py +41 -41
  85. modulitiz_micro/util/pip/ModuloPip.py +49 -49
  86. modulitiz_micro/util/scheduler/AbstractScheduler.py +32 -32
  87. modulitiz_micro/util/spooler/AbstractSpooler.py +14 -14
  88. modulitiz_micro/util/spooler/Spooler.py +18 -18
  89. modulitiz_micro/util/spooler/beans/QueueBean.py +8 -8
  90. modulitiz_micro/util/spooler/decorators/spooler.py +49 -49
  91. modulitiz_micro/util/spooler/eccezioni/EccezioneSpooler.py +7 -7
  92. modulitiz_micro/util/spooler/eccezioni/EccezioneSpoolerFull.py +7 -7
  93. modulitiz_micro/util/unittesting/AbstractOverrideTestUtil.py +31 -31
  94. modulitiz_micro/util/unittesting/AbstractTestUtil.py +11 -11
  95. modulitiz_micro/util/unittesting/ModuloRunUnitTest.py +25 -25
  96. modulitiz_micro/util/wheel/ModuloBuildWheel.py +131 -121
  97. modulitiz_micro/util/wheel/ModuloCheckTestNamingConvention.py +86 -0
  98. modulitiz_micro/util/wheel/ModuloToml.py +40 -40
  99. modulitiz_micro/util/wheel/ModuloWheel.py +12 -12
  100. {modulitiz_micro-2.31.0.dist-info → modulitiz_micro-2.32.0.dist-info}/LICENSE +21 -21
  101. {modulitiz_micro-2.31.0.dist-info → modulitiz_micro-2.32.0.dist-info}/METADATA +64 -64
  102. modulitiz_micro-2.32.0.dist-info/RECORD +104 -0
  103. modulitiz_micro-2.31.0.dist-info/RECORD +0 -103
  104. {modulitiz_micro-2.31.0.dist-info → modulitiz_micro-2.32.0.dist-info}/WHEEL +0 -0
  105. {modulitiz_micro-2.31.0.dist-info → modulitiz_micro-2.32.0.dist-info}/top_level.txt +0 -0
@@ -1,180 +1,180 @@
1
- import locale
2
- import random
3
- import string
4
-
5
- from modulitiz_micro.ModuloDate import ModuloDate
6
-
7
-
8
- class ModuloStringhe(object):
9
- """
10
- Utility di gestione delle stringhe.
11
- """
12
-
13
- CODIFICA_ASCII="ascii"
14
- CODIFICA_LATIN1="latin_1"
15
- CODIFICA_UTF8="utf-8"
16
-
17
- SEP=r"//||//"
18
-
19
- @classmethod
20
- def setLocaleItalian(cls):
21
- """
22
- Necessario per avere, ad esempio, il giorno della settimana nella lingua corretta.
23
- """
24
- cls.setLocale("it_IT")
25
-
26
- @classmethod
27
- def setLocale(cls,lang:str):
28
- """
29
- Imposta la lingua predefinita.
30
- """
31
- try:
32
- cls.__setLocale(lang)
33
- except locale.Error:
34
- lang+=".utf8"
35
- cls.__setLocale(lang)
36
-
37
- @staticmethod
38
- def __setLocale(lang:str):
39
- locale.setlocale(locale.LC_TIME, lang)
40
-
41
- @staticmethod
42
- def isEmpty(val:str|None)->bool:
43
- """
44
- Verifica se il valore passato in input è NULL o vuoto.
45
- """
46
- if val is None:
47
- return True
48
- val=str(val)
49
- return val==''
50
-
51
- @staticmethod
52
- def contains(haystack:str,needle:str)->bool:
53
- """
54
- Verifica se un testo è contenuto in un altro testo.
55
- :param haystack: testo contenitore
56
- :param needle: testo da cercare
57
- """
58
- return haystack.find(needle)!=-1
59
-
60
- @staticmethod
61
- def normalizzaEol(cont:str)->str:
62
- """
63
- Converte i caratteri di fine riga secondo lo standard Unix (universale)
64
- """
65
- cont=cont.replace("\r\n","\n")
66
- cont=cont.replace("\r","\n")
67
- return cont
68
-
69
- @staticmethod
70
- def normalizzaTrattini(testo:str)->str:
71
- """
72
- Tutti i caratteri assimilabili come un trattino vengono convertiti in trattini.
73
- """
74
- #https://en.wikipedia.org/wiki/Dash#Common_dashes_and_Unicode_characters
75
- testo=testo.replace(u'\u2012',"-") #figure dash
76
- testo=testo.replace(u'\u2013',"-") #en dash
77
- testo=testo.replace(u'\u2014',"-") #em dash
78
- testo=testo.replace(u'\u2015',"-") #horizontal bar
79
- #https://en.wikipedia.org/wiki/Hyphen#Unicode
80
- testo=testo.replace(u'\u002D',"-") #HYPHEN-MINUS
81
- testo=testo.replace(u'\u2212',"-") #MINUS SIGN
82
- testo=testo.replace(u'\u00AD',"-") #SOFT HYPHEN
83
- testo=testo.replace(u'\u2010',"-") #HYPHEN
84
- testo=testo.replace(u'\u2011',"-") #NON-BREAKING HYPHEN
85
- testo=testo.replace(u'\u0584',"-") #ARMENIAN HYPHEN
86
- testo=testo.replace(u'\u1806',"-") #MONGOLIAN SOFT HYPHEN
87
- testo=testo.replace(u'\uFE63',"-") #SMALL HYPHEN-MINUS
88
- testo=testo.replace(u'\uFF0D',"-") #FULLWIDTH HYPHEN-MINUS
89
- testo=testo.replace(u'\u2043',"-") #HYPHEN BULLET
90
- return testo
91
-
92
- @staticmethod
93
- def normalizzaCaratteriSpeciali(testo:str)->str:
94
- """
95
- Normalizzazione altri caratteri speciali.
96
- """
97
- testo=testo.replace(u'\u039b','&') #GREEK CAPITAL LETTER LAMDA
98
- return testo
99
-
100
- @classmethod
101
- def aggiungiTimestamp(cls,nomefile:str)->str:
102
- """
103
- Se il nome del file ha l'estensione aggiungo il timestamp prima dell'estensione
104
- """
105
- timestamp=ModuloDate.dateToString(None,ModuloDate.FORMATO_DATA_ORA_NOSPAZI)
106
- if not cls.contains(nomefile,"."):
107
- return nomefile+"_"+timestamp
108
- arr=nomefile.split(".")
109
- nuovonome=".".join(arr[0:-1])+"_"+timestamp+"."+arr[-1]
110
- return nuovonome
111
-
112
- @classmethod
113
- def phoneNumberFormat(cls,stringa:str,sep:str):
114
- """
115
- Formatta un numero di telefono rendendolo più facile da leggere.
116
- """
117
- return cls.insertCharEveryN(stringa,sep,3)
118
-
119
- @staticmethod
120
- def capitalizeEveryWord(text:str)->str:
121
- """
122
- Converte in maiuscolo il primo carattere di ogni parola.
123
- """
124
- arr=text.split(" ")
125
- arrNew=[x.capitalize() for x in arr]
126
- textNew=" ".join(arrNew)
127
- return textNew
128
-
129
- @staticmethod
130
- def splitColonne(text:str,sep:str)->list:
131
- """
132
- Divide una stringa in colonne, ad ogni colonna vengono tolti gli spazi all'inizio e alla fine.
133
- """
134
- colonne=text.split(sep)
135
- colonne=[x.strip() for x in colonne]
136
- return colonne
137
-
138
- @staticmethod
139
- def randomString(useLower:bool,useUpper:bool,useDigits:bool,length:int)->str:
140
- """
141
- Crea una stringa di caratteri e/o numeri di lunghezza configurabile.
142
- """
143
- chars=""
144
- if useLower:
145
- chars+=string.ascii_lowercase
146
- if useUpper:
147
- chars+=string.ascii_uppercase
148
- if useDigits:
149
- chars+=string.digits
150
- return ''.join(random.choices(chars, k=length))
151
-
152
- @staticmethod
153
- def insertCharEveryN(stringa:str,sep:str,everyN:int)->str:
154
- """
155
- Inserisce un carattere o un testo ogni N caratteri di un altro testo.
156
- """
157
- return sep.join(stringa[i:i+everyN] for i in range(0, len(stringa), everyN))
158
-
159
- @staticmethod
160
- def trovaCodificaCorretta(textBytes:bytes,expectedText:str)->list:
161
- """
162
- Questa funzione non ti puo' dire se la codifica e' corretta,
163
- devi verificarlo tu a occhio perche' piu' codifiche possono andare bene.
164
- """
165
- # questa variabile la lascio qui dentro perche' e' pesante
166
- codecs=('ascii','big5','big5hkscs','cp037','cp424','cp437','cp500','cp737','cp775','cp850','cp852','cp855','cp856','cp857','cp860','cp861','cp862','cp863','cp864','cp865','cp866',
167
- 'cp869','cp874','cp875','cp932','cp949','cp950','cp1006','cp1026','cp1140','cp1250','cp1251','cp1252','cp1253','cp1254','cp1255','cp1256','cp1257','cp1258','euc_jp',
168
- 'euc_jis_2004','euc_jisx0213','euc_kr','gb2312','gbk','gb18030','hz','iso2022_jp','iso2022_jp_1','iso2022_jp_2','iso2022_jp_2004','iso2022_jp_3','iso2022_jp_ext','iso2022_kr',
169
- 'latin_1','iso8859_2','iso8859_3','iso8859_4','iso8859_5','iso8859_6','iso8859_7','iso8859_8','iso8859_9','iso8859_10','iso8859_13','iso8859_14','iso8859_15','johab','koi8_r',
170
- 'koi8_u','mac_cyrillic','mac_greek','mac_iceland','mac_latin2','mac_roman','mac_turkish','ptcp154','shift_jis','shift_jis_2004','shift_jisx0213','utf_16','utf_16_be','utf_16_le',
171
- 'utf_7','utf_8','utf_8_sig')
172
- results=[]
173
- for codec in codecs:
174
- try:
175
- testo=textBytes.decode(codec)
176
- if testo==expectedText:
177
- results.append(codec)
178
- except UnicodeDecodeError:
179
- pass
180
- return results
1
+ import locale
2
+ import random
3
+ import string
4
+
5
+ from modulitiz_micro.ModuloDate import ModuloDate
6
+
7
+
8
+ class ModuloStringhe(object):
9
+ """
10
+ Utility di gestione delle stringhe.
11
+ """
12
+
13
+ CODIFICA_ASCII="ascii"
14
+ CODIFICA_LATIN1="latin_1"
15
+ CODIFICA_UTF8="utf-8"
16
+
17
+ SEP=r"//||//"
18
+
19
+ @classmethod
20
+ def setLocaleItalian(cls):
21
+ """
22
+ Necessario per avere, ad esempio, il giorno della settimana nella lingua corretta.
23
+ """
24
+ cls.setLocale("it_IT")
25
+
26
+ @classmethod
27
+ def setLocale(cls,lang:str):
28
+ """
29
+ Imposta la lingua predefinita.
30
+ """
31
+ try:
32
+ cls.__setLocale(lang)
33
+ except locale.Error:
34
+ lang+=".utf8"
35
+ cls.__setLocale(lang)
36
+
37
+ @staticmethod
38
+ def __setLocale(lang:str):
39
+ locale.setlocale(locale.LC_TIME, lang)
40
+
41
+ @staticmethod
42
+ def isEmpty(val:str|None)->bool:
43
+ """
44
+ Verifica se il valore passato in input è NULL o vuoto.
45
+ """
46
+ if val is None:
47
+ return True
48
+ val=str(val)
49
+ return val==''
50
+
51
+ @staticmethod
52
+ def contains(haystack:str,needle:str)->bool:
53
+ """
54
+ Verifica se un testo è contenuto in un altro testo.
55
+ :param haystack: testo contenitore
56
+ :param needle: testo da cercare
57
+ """
58
+ return haystack.find(needle)!=-1
59
+
60
+ @staticmethod
61
+ def normalizzaEol(cont:str)->str:
62
+ """
63
+ Converte i caratteri di fine riga secondo lo standard Unix (universale)
64
+ """
65
+ cont=cont.replace("\r\n","\n")
66
+ cont=cont.replace("\r","\n")
67
+ return cont
68
+
69
+ @staticmethod
70
+ def normalizzaTrattini(testo:str)->str:
71
+ """
72
+ Tutti i caratteri assimilabili come un trattino vengono convertiti in trattini.
73
+ """
74
+ #https://en.wikipedia.org/wiki/Dash#Common_dashes_and_Unicode_characters
75
+ testo=testo.replace(u'\u2012',"-") #figure dash
76
+ testo=testo.replace(u'\u2013',"-") #en dash
77
+ testo=testo.replace(u'\u2014',"-") #em dash
78
+ testo=testo.replace(u'\u2015',"-") #horizontal bar
79
+ #https://en.wikipedia.org/wiki/Hyphen#Unicode
80
+ testo=testo.replace(u'\u002D',"-") #HYPHEN-MINUS
81
+ testo=testo.replace(u'\u2212',"-") #MINUS SIGN
82
+ testo=testo.replace(u'\u00AD',"-") #SOFT HYPHEN
83
+ testo=testo.replace(u'\u2010',"-") #HYPHEN
84
+ testo=testo.replace(u'\u2011',"-") #NON-BREAKING HYPHEN
85
+ testo=testo.replace(u'\u0584',"-") #ARMENIAN HYPHEN
86
+ testo=testo.replace(u'\u1806',"-") #MONGOLIAN SOFT HYPHEN
87
+ testo=testo.replace(u'\uFE63',"-") #SMALL HYPHEN-MINUS
88
+ testo=testo.replace(u'\uFF0D',"-") #FULLWIDTH HYPHEN-MINUS
89
+ testo=testo.replace(u'\u2043',"-") #HYPHEN BULLET
90
+ return testo
91
+
92
+ @staticmethod
93
+ def normalizzaCaratteriSpeciali(testo:str)->str:
94
+ """
95
+ Normalizzazione altri caratteri speciali.
96
+ """
97
+ testo=testo.replace(u'\u039b','&') #GREEK CAPITAL LETTER LAMDA
98
+ return testo
99
+
100
+ @classmethod
101
+ def aggiungiTimestamp(cls,nomefile:str)->str:
102
+ """
103
+ Se il nome del file ha l'estensione aggiungo il timestamp prima dell'estensione
104
+ """
105
+ timestamp=ModuloDate.dateToString(None,ModuloDate.FORMATO_DATA_ORA_NOSPAZI)
106
+ if not cls.contains(nomefile,"."):
107
+ return nomefile+"_"+timestamp
108
+ arr=nomefile.split(".")
109
+ nuovonome=".".join(arr[0:-1])+"_"+timestamp+"."+arr[-1]
110
+ return nuovonome
111
+
112
+ @classmethod
113
+ def phoneNumberFormat(cls,stringa:str,sep:str):
114
+ """
115
+ Formatta un numero di telefono rendendolo più facile da leggere.
116
+ """
117
+ return cls.insertCharEveryN(stringa,sep,3)
118
+
119
+ @staticmethod
120
+ def capitalizeEveryWord(text:str)->str:
121
+ """
122
+ Converte in maiuscolo il primo carattere di ogni parola.
123
+ """
124
+ arr=text.split(" ")
125
+ arrNew=[x.capitalize() for x in arr]
126
+ textNew=" ".join(arrNew)
127
+ return textNew
128
+
129
+ @staticmethod
130
+ def splitColonne(text:str,sep:str)->list:
131
+ """
132
+ Divide una stringa in colonne, ad ogni colonna vengono tolti gli spazi all'inizio e alla fine.
133
+ """
134
+ colonne=text.split(sep)
135
+ colonne=[x.strip() for x in colonne]
136
+ return colonne
137
+
138
+ @staticmethod
139
+ def randomString(useLower:bool,useUpper:bool,useDigits:bool,length:int)->str:
140
+ """
141
+ Crea una stringa di caratteri e/o numeri di lunghezza configurabile.
142
+ """
143
+ chars=""
144
+ if useLower:
145
+ chars+=string.ascii_lowercase
146
+ if useUpper:
147
+ chars+=string.ascii_uppercase
148
+ if useDigits:
149
+ chars+=string.digits
150
+ return ''.join(random.choices(chars, k=length))
151
+
152
+ @staticmethod
153
+ def insertCharEveryN(stringa:str,sep:str,everyN:int)->str:
154
+ """
155
+ Inserisce un carattere o un testo ogni N caratteri di un altro testo.
156
+ """
157
+ return sep.join(stringa[i:i+everyN] for i in range(0, len(stringa), everyN))
158
+
159
+ @staticmethod
160
+ def trovaCodificaCorretta(textBytes:bytes,expectedText:str)->list:
161
+ """
162
+ Questa funzione non ti puo' dire se la codifica e' corretta,
163
+ devi verificarlo tu a occhio perche' piu' codifiche possono andare bene.
164
+ """
165
+ # questa variabile la lascio qui dentro perche' e' pesante
166
+ codecs=('ascii','big5','big5hkscs','cp037','cp424','cp437','cp500','cp737','cp775','cp850','cp852','cp855','cp856','cp857','cp860','cp861','cp862','cp863','cp864','cp865','cp866',
167
+ 'cp869','cp874','cp875','cp932','cp949','cp950','cp1006','cp1026','cp1140','cp1250','cp1251','cp1252','cp1253','cp1254','cp1255','cp1256','cp1257','cp1258','euc_jp',
168
+ 'euc_jis_2004','euc_jisx0213','euc_kr','gb2312','gbk','gb18030','hz','iso2022_jp','iso2022_jp_1','iso2022_jp_2','iso2022_jp_2004','iso2022_jp_3','iso2022_jp_ext','iso2022_kr',
169
+ 'latin_1','iso8859_2','iso8859_3','iso8859_4','iso8859_5','iso8859_6','iso8859_7','iso8859_8','iso8859_9','iso8859_10','iso8859_13','iso8859_14','iso8859_15','johab','koi8_r',
170
+ 'koi8_u','mac_cyrillic','mac_greek','mac_iceland','mac_latin2','mac_roman','mac_turkish','ptcp154','shift_jis','shift_jis_2004','shift_jisx0213','utf_16','utf_16_be','utf_16_le',
171
+ 'utf_7','utf_8','utf_8_sig')
172
+ results=[]
173
+ for codec in codecs:
174
+ try:
175
+ testo=textBytes.decode(codec)
176
+ if testo==expectedText:
177
+ results.append(codec)
178
+ except UnicodeDecodeError:
179
+ pass
180
+ return results
@@ -1,46 +1,46 @@
1
- from modulitiz_micro.ModuloNumeri import ModuloNumeri
2
- from modulitiz_micro.ModuloStringhe import ModuloStringhe
3
- from modulitiz_micro.gestionedom.GestioneDom import GestioneDom
4
- from modulitiz_micro.rete.http.ModuloHttp import ModuloHttp
5
-
6
-
7
- class ModuloTarghe(object):
8
- """
9
- Utility di gestione delle targhe delle auto.
10
- """
11
-
12
- URL="https://autokar.it/targhe"
13
-
14
- @classmethod
15
- def getAnno(cls,targa:str)->int|None:
16
- """
17
- Cerca la targa e restituisce approssimativamente l'anno di immatricolazione.
18
- :param targa: la targa dell'auto da cercare.
19
- """
20
- http=ModuloHttp(cls.URL,None,False)
21
- responseBody=http.doGet(3,True).responseBody.decode(ModuloStringhe.CODIFICA_LATIN1)
22
- gestioneDom=GestioneDom(None,responseBody)
23
- elementi=gestioneDom.selector(".entry-content p")
24
- targaIniziale=targa[:2]
25
- for elem in elementi:
26
- anno=cls.__getAnno(elem,targaIniziale)
27
- if anno is not None:
28
- return anno
29
-
30
- @classmethod
31
- def __getAnno(cls,tag,targaIniziale:str)->int|None:
32
- elementi=tag.contents
33
- if len(elementi)!=2:
34
- return None
35
- try:
36
- testo=elementi[0].contents[0]
37
- except AttributeError:
38
- return None
39
- if targaIniziale!=testo:
40
- return None
41
- annoStr=elementi[1].strip()
42
- anno=ModuloNumeri.strToInt(annoStr)
43
- if anno is not None:
44
- return anno
45
- anno=int(annoStr.split(" ")[0])
46
- return anno
1
+ from modulitiz_micro.ModuloNumeri import ModuloNumeri
2
+ from modulitiz_micro.ModuloStringhe import ModuloStringhe
3
+ from modulitiz_micro.gestionedom.GestioneDom import GestioneDom
4
+ from modulitiz_micro.rete.http.ModuloHttp import ModuloHttp
5
+
6
+
7
+ class ModuloTarghe(object):
8
+ """
9
+ Utility di gestione delle targhe delle auto.
10
+ """
11
+
12
+ URL="https://autokar.it/targhe"
13
+
14
+ @classmethod
15
+ def getAnno(cls,targa:str)->int|None:
16
+ """
17
+ Cerca la targa e restituisce approssimativamente l'anno di immatricolazione.
18
+ :param targa: la targa dell'auto da cercare.
19
+ """
20
+ http=ModuloHttp(cls.URL,None,False)
21
+ responseBody=http.doGet(3,True).responseBody.decode(ModuloStringhe.CODIFICA_LATIN1)
22
+ gestioneDom=GestioneDom(None,responseBody)
23
+ elementi=gestioneDom.selector(".entry-content p")
24
+ targaIniziale=targa[:2]
25
+ for elem in elementi:
26
+ anno=cls.__getAnno(elem,targaIniziale)
27
+ if anno is not None:
28
+ return anno
29
+
30
+ @classmethod
31
+ def __getAnno(cls,tag,targaIniziale:str)->int|None:
32
+ elementi=tag.contents
33
+ if len(elementi)!=2:
34
+ return None
35
+ try:
36
+ testo=elementi[0].contents[0]
37
+ except AttributeError:
38
+ return None
39
+ if targaIniziale!=testo:
40
+ return None
41
+ annoStr=elementi[1].strip()
42
+ anno=ModuloNumeri.strToInt(annoStr)
43
+ if anno is not None:
44
+ return anno
45
+ anno=int(annoStr.split(" ")[0])
46
+ return anno
@@ -1,18 +1,18 @@
1
- from modulitiz_micro.sistema.ModuloSystem import ModuloSystem
2
-
3
-
4
- class ModuloAndroid(object):
5
- @staticmethod
6
- def isAaptInstalled()->bool:
7
- return ModuloSystem.isAptPackageInstalled("aapt")
8
- @staticmethod
9
- def isAdbInstalled()->bool:
10
- return ModuloSystem.isAptPackageInstalled("adb")
11
-
12
- @staticmethod
13
- def getApkVersionName(nomefile:str)->str|None:
14
- if not ModuloAndroid.isAaptInstalled():
15
- return None
16
- cmd=rf'''aapt dump badging {nomefile} | grep "versionName" | sed -e "s/.*versionName='//" -e "s/' .*//"'''
17
- output=ModuloSystem.systemCallReturnOutput(cmd,None)
18
- return output
1
+ from modulitiz_micro.sistema.ModuloSystem import ModuloSystem
2
+
3
+
4
+ class ModuloAndroid(object):
5
+ @staticmethod
6
+ def isAaptInstalled()->bool:
7
+ return ModuloSystem.isAptPackageInstalled("aapt")
8
+ @staticmethod
9
+ def isAdbInstalled()->bool:
10
+ return ModuloSystem.isAptPackageInstalled("adb")
11
+
12
+ @staticmethod
13
+ def getApkVersionName(nomefile:str)->str|None:
14
+ if not ModuloAndroid.isAaptInstalled():
15
+ return None
16
+ cmd=rf'''aapt dump badging {nomefile} | grep "versionName" | sed -e "s/.*versionName='//" -e "s/' .*//"'''
17
+ output=ModuloSystem.systemCallReturnOutput(cmd,None)
18
+ return output
@@ -1,48 +1,48 @@
1
- from modulitiz_micro.ModuloStringhe import ModuloStringhe
2
- from modulitiz_micro.sistema.ModuloSystem import ModuloSystem
3
-
4
-
5
- class ModuloAndroidAdb(object):
6
- """
7
- deviceId puo' essere l'identificativo:
8
- - del dispositivo di 16 caratteri esadecimale
9
- - della porta usb, del prodotto, del modello, ... (vedi il comando 'adb devices -l')
10
- il transport_id non e' supportato
11
- """
12
-
13
- def __init__(self,deviceId:str):
14
- self.deviceId=deviceId
15
-
16
- def isDeviceConnected(self)->bool:
17
- cmd=r'adb -s "%s" get-state'%(self.deviceId,)
18
- return self.__retrieveLastLineOfOutput(cmd)=='device'
19
-
20
- def isDeviceUnlocked(self)->bool:
21
- cmd=r'adb -s "%s" shell dumpsys window | grep mDreamingLockscreen'%(self.deviceId,)
22
- output=ModuloSystem.systemCallReturnOutput(cmd,None).strip()
23
- valori=[x.split("=")[1] for x in output.split(" ")]
24
- for valore in valori:
25
- if valore=="true":
26
- return False
27
- return True
28
-
29
- def reboot(self)->bool:
30
- cmd=r'adb -s "%s" reboot'%(self.deviceId,)
31
- return self.__retrieveLastLineOfOutput(cmd)==''
32
- def shutdown(self)->bool:
33
- cmd=r'adb -s "%s" reboot -p'%(self.deviceId,)
34
- return self.__retrieveLastLineOfOutput(cmd)=='Done'
35
-
36
- @classmethod
37
- def closeServer(cls) -> bool:
38
- cmd="adb kill-server"
39
- return cls.__retrieveOutput(cmd)==''
40
-
41
- @staticmethod
42
- def __retrieveOutput(cmd)->str:
43
- return ModuloStringhe.normalizzaEol(ModuloSystem.systemCallReturnOutput(cmd,None)).strip()
44
- @classmethod
45
- def __retrieveLastLineOfOutput(cls,cmd)->str:
46
- output=cls.__retrieveOutput(cmd)
47
- righe=output.split("\n")
48
- return righe[-1]
1
+ from modulitiz_micro.ModuloStringhe import ModuloStringhe
2
+ from modulitiz_micro.sistema.ModuloSystem import ModuloSystem
3
+
4
+
5
+ class ModuloAndroidAdb(object):
6
+ """
7
+ deviceId puo' essere l'identificativo:
8
+ - del dispositivo di 16 caratteri esadecimale
9
+ - della porta usb, del prodotto, del modello, ... (vedi il comando 'adb devices -l')
10
+ il transport_id non e' supportato
11
+ """
12
+
13
+ def __init__(self,deviceId:str):
14
+ self.deviceId=deviceId
15
+
16
+ def isDeviceConnected(self)->bool:
17
+ cmd=r'adb -s "%s" get-state'%(self.deviceId,)
18
+ return self.__retrieveLastLineOfOutput(cmd)=='device'
19
+
20
+ def isDeviceUnlocked(self)->bool:
21
+ cmd=r'adb -s "%s" shell dumpsys window | grep mDreamingLockscreen'%(self.deviceId,)
22
+ output=ModuloSystem.systemCallReturnOutput(cmd,None).strip()
23
+ valori=[x.split("=")[1] for x in output.split(" ")]
24
+ for valore in valori:
25
+ if valore=="true":
26
+ return False
27
+ return True
28
+
29
+ def reboot(self)->bool:
30
+ cmd=r'adb -s "%s" reboot'%(self.deviceId,)
31
+ return self.__retrieveLastLineOfOutput(cmd)==''
32
+ def shutdown(self)->bool:
33
+ cmd=r'adb -s "%s" reboot -p'%(self.deviceId,)
34
+ return self.__retrieveLastLineOfOutput(cmd)=='Done'
35
+
36
+ @classmethod
37
+ def closeServer(cls) -> bool:
38
+ cmd="adb kill-server"
39
+ return cls.__retrieveOutput(cmd)==''
40
+
41
+ @staticmethod
42
+ def __retrieveOutput(cmd)->str:
43
+ return ModuloStringhe.normalizzaEol(ModuloSystem.systemCallReturnOutput(cmd,None)).strip()
44
+ @classmethod
45
+ def __retrieveLastLineOfOutput(cls,cmd)->str:
46
+ output=cls.__retrieveOutput(cmd)
47
+ righe=output.split("\n")
48
+ return righe[-1]