Post Reply 
Python: ZSYS module (mimics SYS)
05-21-2023, 08:24 PM (This post was last modified: 05-21-2023 08:30 PM by StephenG1CMZ.)
Post: #1
Python: ZSYS module (mimics SYS)
ZSYS aims to mimic some of the functionality of the sys module, which is provided with most python's, but is absent from the micropython on most calculators.

The aim of the initial implementation serves two purposes:
To attempt to identify which calculator is running, which may be useful in tweaking portable code.
And to emulate some functions that portable code might call in sys, where it is unavailable.

Note: Those versions of the HP Prime that support Python will have sys built-in. Just use sys, unless you wish to make your code portable.

With thanks to the contributions from this thread:
https://www.hpmuseum.org/forum/thread-19962.html

Stephen Lewkowicz (G1CMZ)
https://my.numworks.com/python/steveg1cmz
Visit this user's website Find all posts by this user
Quote this message in a reply
05-21-2023, 08:27 PM (This post was last modified: 05-21-2023 08:41 PM by StephenG1CMZ.)
Post: #2
RE: Python: ZSYS module (mimics SYS)
Version 0.1 of ZSYS identifies calculator makers.
(Specific calculators cannot generally be identified).




Code:


"""ZSYS mimics part of sys where needed.

It allows portable code to identify calculator platforms despite most calculators not having sys.
"""

crme="""
© 2023 StephenG1CMZ
"""
crid="ZSYS v0.1"+crme
impname="micropython" #unless sys exist
impversioninfo=None #version unknown
platform="" #sys.platform
#Note that detecting files from these
#does not guarantee which is running
isCasio=False
isHP=False
isNumworks=False
isPrime=False
isTI=False
isCalculator=False
calculators=""
isSys=False

try:
  import sys
  platform = sys.platform
  #sys.implementation
  #impname = sys.implementation.name
  #impmachine = sys.implementation.machine
  impversioninfo=sys.implementation.version_info
  isSys=True
  try:
    if sys.platform == "HP Prime":
      isPrime = True
    else:
      isPrime=False
  except:
    isPrime=False

except:  #only examine files if no sys
  #reason: exclude false positives from imposters
  try: #Casio
    import casioplot
    isCasio=True
    platform="Casio"
  except:
    isCasio=False 

  try: #Numworks
    import ion
    isNumworks=True
    platform="Numworks"
  except:
    isNumworks=False
  if isNumworks:
    try:
      import os
      fork="Omega" #alternative
    except:
      fork="Epsilon" #Main

  try: #TI
    import ti_system
    isTI=True
    platform="TI"
    hhdt=get_platform()
  except:
    IsTI=False

if isPrime:
  #identifiable calculator
  isHP=True

if isCasio or isHP or isNumworks or isTI:
  isCalculator=True
  calculators=" calculator"

def exit(exc=0): #mimic sys.exit
  raise SystemExit(exc)

def main():
  #micropython, cpython etc.
  print(impname,impversioninfo)
 #from sys, or Calculator maker
  print(platform,calculators)

  if showmore:
    if isNumworks:
      if fork=="Omega":
        print(fork,os.name)

    if isTI:
      #handheld/desktop
      print(get_platform()) #hh/dt=handheld/desktop

showme=True #customise
showmore=True #customise

if showme or __name__ == "__main__":
  print(crid)
  main()

Note: Since Python has yet to reach HP Prime Android, it is currently tested only on Numworks.

Stephen Lewkowicz (G1CMZ)
https://my.numworks.com/python/steveg1cmz
Visit this user's website Find all posts by this user
Quote this message in a reply
05-21-2023, 10:02 PM
Post: #3
RE: Python: ZSYS module (mimics SYS)
(05-21-2023 08:27 PM)StephenG1CMZ Wrote:  Note: Since Python has yet to reach HP Prime Android, it is currently tested only on Numworks.

Why not simply test it on a Prime device??

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
05-21-2023, 11:26 PM (This post was last modified: 05-22-2023 08:48 AM by StephenG1CMZ.)
Post: #4
RE: Python: ZSYS module (mimics SYS)
Well, since you asked...
Local shops don't sell it (they do sell Casio, but without Python).
And I haven't bought anything mail-order for myself since attempting to buy a radio, which the guy at the post office would only hand over to Mr. G1CMZ - I didn't have a matching birth certificate.

Also, I have always got a phone with me I know how to cut-and-paste code from an App.
But the real HP Prime doesn't have standard WiFi, so I imagine I would have to mess around with and carry cables, OTG dongles and the like (not to mention the calculator)?

The Numworks App just works*, wherever I am.

*The HP Prime version may require a phone signal.
https://www.hpmuseum.org/forum/thread-15...ime+broken

Stephen Lewkowicz (G1CMZ)
https://my.numworks.com/python/steveg1cmz
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)