Ho appena scoperto che da Python 3.8 esiste
In questo modo è possibile ottenere dei warning nel caso in cui si stiano facendo stronzate, pur mantenendo la dinamicità di python ❤️
Esiste pure il decorator
https://docs.python.org/3/library/typing.html#typing.Protocol
typing.Protocol: una classe da estendere molto base non istanziabile, per creare stub utilizzabili negli static-type checkers.In questo modo è possibile ottenere dei warning nel caso in cui si stiano facendo stronzate, pur mantenendo la dinamicità di python ❤️
Esiste pure il decorator
@typing.runtime_checkable che permette ai Protocol di essere usati in controlli runtime isinstance() e issubclass() come se fossero vere classihttps://docs.python.org/3/library/typing.html#typing.Protocol
Python non finisce mai di stupirmi
https://docs.python.org/3/howto/denoscriptor.html
https://docs.python.org/3/howto/denoscriptor.html
Quando cerchi la soluzione ottimale, ma Python è buggato:
https://bugs.python.org/issue44926
*cries*
get_type_hints() non trova i tipi dichiarati in seguito nel codice, neanche con from __future__ import annotations
(come in C quando vengono dichiarate delle funzioni in ordine sbagliato e non si vedono)https://bugs.python.org/issue44926
*cries*
journalctl -u micro
Python è così dinamico che è possibile accedere a tutti i nomi (variabili, funzioni, ecc) attraverso stringhe (esempio obj.__dict__['attr']). Peccato però che non ha una funzione built-in nameof() come C#... (esempio nameof(my_var) → 'my_var'). Le implicazioni?…
Dato che
1.
2. Non voglio dipendere da un'altra libreria
...ho creato un nuovo metodo 😃
Semplicemente va a recuperare l'ultimo nome dalle annotazioni dello scope precedente.
1.
nameof non esiste2. Non voglio dipendere da un'altra libreria
varname
3. In ogni caso non posso fare riferimento ad un'annotazione (perché l'attributo non esiste)...ho creato un nuovo metodo 😃
Semplicemente va a recuperare l'ultimo nome dalle annotazioni dello scope precedente.
import inspect
from typing import List
def last_name() -> str:
prev_scope = inspect.currentframe().f_back
a = prev_scope.f_locals.get('__annotations__')
if not a:
raise AttributeError(
"At least one annotation must be defined."
)
return next(reversed(a.keys()))
class Dummy:
id: str
K_ID = last_name()
library: List
K_LIB = last_name()
assert Dummy.K_ID == 'id'
assert Dummy.K_LIB == 'library'GBoard stava andando così lenta che mi stava aggiungendo ben 200ms a carattere wtf (anche a cancellare)
journalctl -u micro
A 1~2 metri di distanza, quando sono a letto
Il router:
(per fortuna non lo sento)
(per fortuna non lo sento)
journalctl -u micro
:) https://youtrack.jetbrains.com/issue/PY-46814
Possibile workaround
Edit2: basta cancellarlo a mano lol
class A:Edit: ricordavo male... un decorator non può cancellare un metodo...
@classmethod
def m(cls):
return cls()
class B(A):
@classmethod
def m(cls) -> B: ...
del m
Edit2: basta cancellarlo a mano lol
journalctl -u micro
Quando cerchi la soluzione ottimale, ma Python è buggato: get_type_hints() non trova i tipi dichiarati in seguito nel codice, neanche con from __future__ import annotations (come in C quando vengono dichiarate delle funzioni in ordine sbagliato e non si vedono)…
Altro bug 😭
Il metodo
https://stackoverflow.com/questions/62871524/is-pep-585-unusable-at-runtime-under-python-3-7-and-3-8
Il metodo
typing.get_args dovrebbe ritornare gli argomenti del tipo generico passato:assert typing.get_args(Dict[int, str]) == (int, str)Peccato che quando si fa
from __future__ import annotations, tutte le annotazioni di tipi diventano stringhe per permettere forward-references, e quel metodo non funziona sulle stringhe............https://stackoverflow.com/questions/62871524/is-pep-585-unusable-at-runtime-under-python-3-7-and-3-8
Stack Overflow
Is PEP 585 unusable at runtime under Python 3.7 and 3.8?
PEP 585 -- Type Hinting Generics In Standard Collections claims usability under both Python 3.7 and 3.8 with a standard from __future__ import annotations preamble. Notably:
For use cases restrict...
For use cases restrict...
journalctl -u micro
:) https://youtrack.jetbrains.com/issue/PY-46814
from __future__ import annotations
ancora lui...Edit: no, l'IDE non mostrava nulla ma a runtime esplode per via della f.r.
E ovviamente senza quell'import bisogna definire le singole forward-references a mano come stringhe
Stavo pensando...
Ma se è così una palla tenere aggiornate le app FOSS su android non-root... perché non sfruttare ADB?
Si tiene un software su PC che, collegato il telefono, controlla le versioni e invia i comandi per installare gli aggiornamenti.
Non ci sono popup fastidiosi con installazioni da ADB giusto?
Edit: magari non viene neanche fuori l'odioso popup ricorrente (→ dark pattern) AtTtiVa pLAY PrOtEcT!!1!
Ma se è così una palla tenere aggiornate le app FOSS su android non-root... perché non sfruttare ADB?
Si tiene un software su PC che, collegato il telefono, controlla le versioni e invia i comandi per installare gli aggiornamenti.
Non ci sono popup fastidiosi con installazioni da ADB giusto?
Edit: magari non viene neanche fuori l'odioso popup ricorrente (→ dark pattern) AtTtiVa pLAY PrOtEcT!!1!
journalctl -u micro
Stavo pensando... Ma se è così una palla tenere aggiornate le app FOSS su android non-root... perché non sfruttare ADB? Si tiene un software su PC che, collegato il telefono, controlla le versioni e invia i comandi per installare gli aggiornamenti. Non ci…
This media is not supported in your browser
VIEW IN TELEGRAM
Confermo, non ci sono popup fastidiosi con installazioni da ADB ✅
(Motorola E7 plus, android 10 stock)
(Motorola E7 plus, android 10 stock)
Stavo risistemando i miei bookmarks su firefox, quando ho ritrovato questa pagina che mi ero salvato parecchi anni fa per curiosità
http://mrmms.blogspot.it/
Se avete qualche idea su cosa potrebbe contenere fatemelo sapere 😂
http://mrmms.blogspot.it/
Se avete qualche idea su cosa potrebbe contenere fatemelo sapere 😂
Se avete bisogno / volete curiosare tra la miriade di fonts monospace:
https://www.programmingfonts.org/
Per ora JetBrains Mono non si batte, però ce ne sono alcuni davvero interessanti tipo Cousine, Comic Shanns
https://www.programmingfonts.org/
Per ora JetBrains Mono non si batte, però ce ne sono alcuni davvero interessanti tipo Cousine, Comic Shanns
www.programmingfonts.org
Programming Fonts - Test Drive
Try out the best and newest monospace fonts for code
Vi è mai capitato di spendere troppo tempo ad implementare certe funzionalità, per poi comprendere che - per gli use-case reali - è tutto da buttare?
Ecco, non lo auguro a nessuno... in questi giorni sento un peso che mi ostacola dal proseguire qualsiasi progetto.
Non mi va neanche di cancellare ciò che ho scritto come se niente fosse, quindi penso che sfrutterò la funzionalità delle Shelves di PyCharm per metterle da parte ed annullarle.
Ecco, non lo auguro a nessuno... in questi giorni sento un peso che mi ostacola dal proseguire qualsiasi progetto.
Non mi va neanche di cancellare ciò che ho scritto come se niente fosse, quindi penso che sfrutterò la funzionalità delle Shelves di PyCharm per metterle da parte ed annullarle.
Non uso mai reddit però suggerisco di dare un'occhiata alle opzioni del proprio account...
https://old.reddit.com/prefs/
https://old.reddit.com/personalization
E di bloccare tutti i power mod sotto suggerimento di questo commento:
https://old.reddit.com/r/ThatsInsane/comments/pbloje/almost_all_of_the_top_subreddits_are_moderated_by/hacxggb/
https://old.reddit.com/prefs/
https://old.reddit.com/personalization
E di bloccare tutti i power mod sotto suggerimento di questo commento:
https://old.reddit.com/r/ThatsInsane/comments/pbloje/almost_all_of_the_top_subreddits_are_moderated_by/hacxggb/