π
<-
Chat plein-écran
[^]

TI-Python: import sys révèle du CircuitPython Adafruit !

:32ti73: :32ti73e: :32ti73e2: :32ti76f: :32ti80: :32ti81: :32ti82: :32ti85: :32ti86: :32ti82s: :32ti82sf: :32ti82sfn: :32ti83: :32ti83p: :32ti83pb: :32ti83pr: :32ti83pfr: :32ti83pse: :32ti84p: :32ti84pse: :32ti84ppse: :32ti84pfr: :32ti84pcse: :32ti83pfrusb: :32ti82p: :32ti82a: :32ti84pce: :32ti83pce:

TI-Python: import sys révèle du CircuitPython Adafruit !

Unread postby critor » 28 Jan 2019, 19:48

A la rentrée 2019 le
Python
sera le seul langage de programmation préconisé pour l'enseignement de l'algorithmique au lycée en Seconde et Première.

Plusieurs calculatrices graphiques intègrent déjà une implémentation
Python
officielle dans leur dernière mise à jour, plus ou moins complète, fidèle et réussie selon le cas :
  • NumWorks
    avec
    MicroPython 1.9.4
  • Casio Graph 90+E
    avec
    MicroPython 1.9.4
  • HP Prime
    avec l'écriture
    Python
    de
    Xcas
  • le module externe
    TI-Python
    pour
    TI-83 Premium CE
    avec
    CircuitPython
    (dérivé de MicroPython)
À côté de cela nous avons aussi plusieurs implémentations communautaires, qui à la différence ne fonctionneront pas en mode examen en 2020 :

Ces diverses implémentations ne sont pas équivalentes et diffèrent dans l'éventail de modules qu'elles proposent.

Aussi comme nous l'avons déjà vu, ces implémentations diffèrent également par le contenu proposé dans chaque module.
Nous avons en effet déjà comparé les modules , , , et .

Voici un petit récapitulatif des modules disponibles sur chaque implémentation avec le nombre d'entrées offertes à chaque fois :
NumWorks
Casio
Graph 90+E
module externe
TI-Python
pour
TI-83 Premium CE
builtins218188175204190
array???
collections?
cmath121212
gc???
math4141254128
random8888
sys???
time34
dessin
(spécifique)
?
(nsp)
?
(kandinsky)
Modules
7
6
3
7
8
Éléments
271+
252+
208
265+
230+


D'où à date le classement suivant :
  1. avec
    7
    modules et plus de
    271
    entrées
  2. avec
    7
    modules et plus de
    265
    entrées
  3. NumWorks
    avec
    6
    modules et plus de
    252
    entrées
  4. module externe
    TI-Python
    pour
    TI-83 Premium CE
    avec
    8
    modules et plus de
    230
    entrées
  5. Casio Graph 90+E
    avec
    3
    modules et
    208
    entrées

Un classement bien évidemment non final, puisque basé sur la comparaison d'une partie des modules.

Aujourd'hui poursuivons avec la comparaison d'un module remarquable, le module
sys
, disponible uniquement sur les
TI-Nspire
,
Casio Graph 35/75+E
et module externe
TI-Python
.
C'est en effet l'occasion d'arracher quelques secrets supplémentaires au module externe
TI-Python
... ;)


Pour cela, utilisons le script suivant :
Code: Select all
#platforms:
#0: MicroPython / TI-Nspire
#1: MicroPython / NumWorks
#2: MicroPython / G90+E
#3: MicroPython / G35+E/USB / G75/85/95
#4: CircuitPython / TI-Python / 83PCE
#5: Xcas / HP Prime
#6: KhiCAS / Graph 90+E
def getplatform():
  id=-1
  try:
    import sys
    try:
      if sys.platform=='nspire':id=0
      if sys.platform=='TI-Python Adapter':id=4
    except:id=3
  except:
    try:
      import kandinsky
      id=1
    except:
      try:
        if chr(256)==chr(0):id=5+(not ("HP" in version()))
      except:
        id=2
  return id
 
platform=getplatform()
#lines shown on screen
plines=[29,12,  7, 9,11,0,0]
#max chars per line
#(error or CR if exceeded)
pcols =[53,99,509,32,32,0,0]

nlines=plines[platform]
ncols=pcols[platform]
curline=0

def mprint(*ls):
  global curline
  st=""
  for s in ls:
    if not(isinstance(s,str)):
      s=str(s)
    st=st+s
  stlines=1+int(len(st)/ncols)
  if curline+stlines>=nlines:
    input("Input to continue:")
    curline=0
  print(st)
  curline+=stlines

def sstr(obj):
  try:
    s=obj.__name__
  except:
    s=str(obj)
    a=s.find("'")
    b=s.rfind("'")
    if a>=0 and b!=a:
      s=s[a+1:b]
  return s

def isExplorable(obj):
  s=str(obj)
  return s.startswith("<module '") or s.startswith("<class '")

def explmod(pitm,pitmsl=[],reset=True):
  global curline
  if(reset):
    curline=0
    pitmsl=[sstr(pitm)]
  hd="."*(len(pitmsl)-1)
  spath=".".join(pitmsl)
  c=0
  for itms in sorted(dir(pitm)):
    c=c+1
    try:
      itm=eval(spath+"."+itms)
      mprint(hd+itms+"="+str(itm))
      if isExplorable(itm):
        pitmsl2=pitmsl.copy()
        pitmsl2.append(itms)
        c=c+explmod(itm,pitmsl2,False)
    except:
      mprint(hd+itms)
  if c>0:
    mprint(hd+"Total: "+str(c)+" item(s)")
  return c



Voici ci-contre ce que répondent les
Graph 35/75+E
et
TI-Nspire
, et ci-dessous une reconstitution de ce qu'affiche le module externe
TI-Python
à partir de nos observations et notes d'octobre 2018 aux journées
APMEP
et congrès
UdPPC
:
TI-Python wrote:>>> from explmod import *
>>> import sys
>>> explmod(sys)
__name__=sys
argv=[]
byteorder=little
exit=<function>
implementation=(name='circuitpython', version=(3, 0, 0))
maxsize=1073741823
modules={'handshake': <module 'handshake' from 'handshake.py'>}
path=['', '/', '/lib', '.frozen']
platform=TI-Python Adapter
print_exception=<function>
stderr=<io.FileIO 2>
stdin=<io.FileIO 0>
stdout=<io.FileIO 1>
version=3.4.0
version_info=(3, 4, 0)


10016Comme promis, nous en apprenons davantage sur le module externe
TI-Python
, notamment que contrairement aux autres calculatrices il n'utilise pas
MicroPython
mais
CircuitPython
, une implémentation en fait dérivée de
MicroPython
et développée par
Adafruit
.
Il s'agirait apparemment d'un
Circuitpython 3.0.0
implémentant du
Python 3.4.0
.

Après avoir déjà remarqué que le module externe
TI-Python
utilisait la puce
Atmel ATSAMD21
, puce notablement connue pour son usage dans les
PyBoards
(cartes de développement
Python
)
Trinket M0
et
Feather M0
justement également conçues par
Adafruit
, cela commence à faire beaucoup de coincidences... :#roll#:

1020310204Le module externe
TI-Python
ne serait-il pas tout simplement une carte
Adafruit Trinket M0
ou
Feather M0
, avec le port micro-USB remplacé par du mini-USB ?

9948En tous cas du point de vue logiciel il doit y avoir sans doute un
firmware
différent, vu que la carte
Adafruit Trinket M0
que nous avions apportée au congrès
UdPPC 2018
n'était tout simplement pas reconnue par la calculatrice du stand de
Texas Instruments
.

A part cela, l'on note la possibilité pour un script
Python
de déterminer très facilement si il tourne sur le module externe
TI-Python
en testant juste si platform=='TI-Python Adapter'.

Nous remarquons également dans sys.path la mention de plusieurs dossiers du module externe
TI-Python
: dossier courant, dossier racine /, dossier /lib ainsi qu'un .frozen.

9911sys.modules révèle la présence d'un mystérieux module
handshake
provenant du script
handshake.py
, dans le sens où il n'est pas présent sur la calculatrice du stand de
Texas Instruments
! :o


Bref, récapitulons ce qu'il y a donc dans nos différents modules
sys
:
TI-Nspire
Casio
Graph 35+E/USB
Graph 75/85/95
module externe
TI-Python
pour
TI-83 Premium CE
__name__=sys
argv=[]
byteorder=little
exc_info()
exit()
implementation=(name='micropython', version=(1, 4, 6))
maxsize=2147483647
.
path=['', '/documents/ndless']
platform=nspire
print_exception()
stderr=<io.TextIOWrapper 2>
stdin=<io.TextIOWrapper 0>
stdout=<io.TextIOWrapper 1>
version=3.4.0
version_info=(3, 4, 0)
__name__=sys
argv=
byteorder=big
.
exit()
implementation=(name='micropython', version=(1, 9, 4))
maxsize=2147483647
modules={'explmod'}
path=
.
print_exception()
.
.
.
version=3.4.0
version_info=(3, 4, 0)
__name__=sys
argv=[]
byteorder=little
.
exit()
implementation=(name='circuitpython', version=(3, 0, 0))
maxsize=1073741823
modules={'handshake'}
path=['', '/', '/lib', '.frozen']
platform=TI-Python Adapter
print_exception()
stderr=<io.FileIO 2>
stdin=<io.FileIO 0>
stdout=<io.FileIO 1>
version=3.4.0
version_info=(3, 4, 0)
Total: 15
Total: 12
Total: 15


Ce qui déjà nous fait remarquer que le
Micropython
pour
TI-Nspire
n'est apparemment plus mis à jour depuis des lustres, étant en version
1.4.6
quand toutes les autres calculatrices concernées ont du
Micropython 1.9.4
. :(

Notons aussi que sys.maxsize, taille maximale des listes, chaînes de caractères et autres objets composés, est nettement inférieure sur le module externe
TI-Python
, un peu moins de la moitié de ce qu'elle vaut sur les autres modèles.

Suite à cela, mettons à jour notre petit récapitulatif :
NumWorks
Casio
Graph 90+E
module externe
TI-Python
pour
TI-83 Premium CE
builtins218188175204190
array???
collections?
cmath121212
gc???
math4141254128
random8888
sys151215
time34
dessin
(spécifique)
?
(nsp)
?
(kandinsky)
Modules
7
6
3
7
8
Éléments
286+
252+
208
277+
245+


D'où le classement qui ne change toujours pas :
  1. avec
    7
    modules et plus de
    286
    entrées
  2. avec
    7
    modules et plus de
    277
    entrées
  3. NumWorks
    avec
    6
    modules et plus de
    252
    entrées
  4. module externe
    TI-Python
    pour
    TI-83 Premium CE
    avec
    8
    modules et plus de
    245
    entrées
  5. Casio Graph 90+E
    avec
    3
    modules et
    208
    entrées

A bientôt... ;)
Image
User avatar
critorAdmin.
Niveau 18: DC (Deus ex Calculatorum)
Niveau 18: DC (Deus ex Calculatorum)
Level up: 98.5%
 
Posts: 33825
Images: 8799
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Re: TI-Python: import sys révèle du CircuitPython Adafruit !

Unread postby Adriweb » 29 Jan 2019, 05:40

Cette news a été mentionné dans un article de news d'Adafruit suite a notre tweet automatique :) https://blog.adafruit.com/2019/01/28/ti ... uitpython/

User avatar
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 51.7%
 
Posts: 12655
Images: 1081
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb


Return to News TI-z80 (TI-73, 76, 80, 81, 82, 83, 84, 85, 86)

Who is online

Users browsing this forum: No registered users and 2 guests

-
Search
-
Featured topics
Concours TI-Planet-Casio de rentrée 2019. 3 défis pour plus d'une 15aine de calculatrices graphiques et nombre de goodies sortant de l'ordinaire ! :D
Comparaisons des meilleurs prix pour acheter sa calculatrice !
12
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety 
-
Stats.
484 utilisateurs:
>452 invités
>26 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)